解説動画あり!バナーグラビングとは?

バナーグラビングとは?

Webサーバーの設定状況によっては、HTTPレスポンスヘッダや404 Not Foundエラーページなどから、該当サーバーで利⽤されているソフトウェア情報のバージョン情報が取得できることがあります。利⽤しているソフトウェアが最新バージョンであったり、セキュリティパッチが適⽤されていれば問題ありませんが、そうでない場合に攻撃者にとって有益な情報となることがあります。

このように対象サーバーで利⽤しているソフトウェアバージョンを特定した上で、既知の脆弱性の有無を調査して攻撃に転⽤する⾏為のことをバナーグラビングと呼びます。バナーグラビングは正常なアクセスの範囲であり違法性はなく、かつ⾏為は単純であるため、攻撃する側には専⾨性がなくとも悪⽤することが可能です。

その反⾯、既知の脆弱性が存在した場合のインパクトが⼤きく実害性を招きやすいため、Webサーバーの構築時には適切に対処しておきたい事項となります。

バナーグラビングの仕組み

Webアプリケーションにおいてバナー(ソフトウェアバージョン情報)を取得するには、存在するページにアクセスすれば対策されていないサイトでは取得することができます。

HTTPレスポンスヘッダからのバナー情報取得の例

また、エラーページの画⾯上に表⽰されることもあるため、意図的にエラー画⾯を表⽰させて取得することもあります。

404 Not Found エラー画⾯からバナー情報取得の例

脆弱性の解説動画

バナーグラビングが起こる原因

詳細な原因は利⽤しているWebサーバーやミドルウェアの種類により様々ありますが、基本的にはバージョン情報の出⼒を抑⽌していないことが原因となります。

バージョン情報が出⼒されているHTTPレスポンスヘッダの例

HTTP/1.1 200 OK
Date: Mon, 21 Nov 2022 09:07:34 GMT
Server: Apache/2.4.41 (Ubuntu) 
Vary: Accept-Encoding
Content-Length: 991
Connection: close
Content-Type: text/html;charset=UTF-8

バージョン情報が出⼒されている 404 Not Found エラー画⾯の例

バナーグラビングへの対策⼿法

出⼒されるバージョン情報や出⼒位置により対策が変わりますが、以下のようなサーバー設定によってバージョン情報を抑⽌することが基本対策となります。

Apacheでの設定例

サーバ情報を⾮表⽰にするには、httpd.confに以下の内容を反映することで対策が可能です。

【httpd.conf】

ServerTokens OS
    ↓ ※Prodに変更
ServerTokens Prod

nginxでの設定例

サーバ情報を⾮表⽰にするには、nginx.confに以下の内容を追記することで対策が可能です。

【nginx.conf】

http {
    server_tokens off;
    more_clear_headers 'X-Powered-By';
… 略

IISでの設定例

サーバ情報を⾮表⽰にするには、web.configに以下の内容を反映することで対策が可能です。

【web.config】

/* X-AspNet-Versionヘッダの⾮表⽰ */
<system.web>
  <!-- enableVersionHeader 属性を追加 -->
  <httpRuntime enableVersionHeader="false" targetFramework="4.6.1"/>
</system.web>

/* X-Powered-Byヘッダの⾮表⽰ */
<system.webServer>
  <httpProtocol>
    <customHeaders>
      <remove name="X-Powered-By"/>
    </customHeaders>
  </httpProtocol>

/* Serverヘッダの⾮表⽰ */
  <security>
    <requestFiltering removeServerHeader="true"/>
  </security>
</system.webServer>

Apache Tomcatでの設定例

Apache Tomcatエラー画⾯のバージョン情報を⾮表⽰にするには、 ServerInfo.propertiesの内容を編集することで対策が可能です。

【ServerInfo.properties】

server.info=Apache Tomcat/9.1.10
    ↓ ※空値に変更
server.info=

PHPでの設定例

PHPのバージョン情報を含むX-Powered-Byヘッダを⾮表⽰にするには、php.iniの内容を編集することで対策が可能です。

【php.ini】

expose_php=Off

まずは手軽にツールで脆弱性診断

バナーグラビングの解説をここまで⾏ってきましたが、上述の対策⼿法が重要となる⼀⽅で、脆弱性が混⼊されていないかを検知する事も重要となります。そのためには脆弱性診断を受診する必要があり、バナーグラビングの脆弱性についても脆弱性診断を通じて発⾒する事が出来ます。

脆弱性診断とは何かについて詳しく知りたい⽅は脆弱性診断とは(エンジニア向け)脆弱性診断とは(⾮エンジニア向け)もぜひご参照ください。

脆弱性診断ツール「Securify Scan」では、バナーグラビングの脆弱性検知も対応しております。脆弱性検知やセキュリティレベルを強化したい企業様はぜひ弊社の脆弱性診断ツール「Securify Scan」を活⽤ください。

無償でのトライアル実施も⾏っておりますので、お気軽にお問い合わせください。

Webアプリケーションの
継続的セキュリティを簡単に実現
Securify

ブログ一覧へ戻る

サービスに関するご質問・ご相談など
お気軽にお問い合わせください