【Webサーバー(IIS)】httpヘッダーにASP.NETのバージョンが表示されてしまう脆弱性と対策
httpヘッダーにASP.NETバージョン情報が
表示されてしまうという脆弱性の
指摘を受けた
実は詳しくは理解してないけど
.NETはJavaなんかと
同列のプログラムの
フレームワークだと認識している
たとえばJavaで書かれたアプリは
Apacheを使おうがIISを使おうが動くけど、
.Net系は同じMicrosoft製の
WindowsServerとIISの組み合わせ
じゃないと動かない?
ゆえに今回のケースはIISでしか
発生しないと思われる
バージョンが表示されてしまう状況の再現
状況次第とは思うけど
今回のケースでは
どうにかして
500 Internal Server Error
をだすと
応答ヘッダー部分に
X-ASPNet-Version: 4.XXXX
とバージョン情報が表示されるというもの
ちなみに関係ないけど
phpで500エラーを意図的にだすには
以下のようにするらしい
<?php header('HTTP/1.1 500 Internal Server Error'); ?>
バージョンが表示されないようにするための対策
バージョンというかそもそも
X-ASPNet-Version:
という項目自体を出さなくする
必須で表示しなければいけない
項目は決まっているので
アプリ側が許せば
それ以外の項目は基本的に
表示・非表示の制御は
できる、、、
のかもしれない(自信なし)
設定するにはweb.configの
記載を修正する
GUIが売りのIISの場合、
たいがいのことはアイコンから
設定でき、その操作が
自動的にweb.configに記述される
しかし、マニアックなこととなると
web.configを直接編集しないと
いけないらしい
web.configと一言で言っても
IIS全体のマスター?configと
その下位に位置するサイトごとの
web.configが存在し、
通常はサイトごとのほうを編集する
サイト名を右クリックしてフォルダを開く
当初、フォルダのなかにweb.configが
見当たらずかなり悩んだが
なんでもいいので設定をすれば
自動的にweb.configが作成されるらしい
web.configを開いたら
configurationの中のsystem.webの中に
以下の通りX-ASPNet-Versionを無効化する
設定を記載する
<configuration> <system.web> <httpRuntime enableVersionHeader="false" /> </system.web> </configuration>
httpヘッダーには実は非常に多くの
情報が含まれていて、デフォルトの
まま表示させてしまうと
攻撃者にとって有用な情報が
多々あるというのが最近
身をもって分かってきた
一般ピーポーには
バージョンが分かったくらいでは
どうしようもないけど
玄人にしたらよい手掛かりになって
しまうのだろう
インターネットに公開している
Webサーバーを持っている限り
気をつけるに越したことはない