アプリのURLで合理的なアプリスキャンを実行すると、次の結果が返されます。
次のHTTPメソッド(動詞)の1つ(または複数)を許可するようにWebサーバーが構成されているようです-DELETE-SEARCH-COPY-MOVE-PROPFIND-PROPPATCH-MKCOL-LOCK-UNLOCK-PUT
これを修正するために、これらのメソッドを禁止するRewriteRuleを追加しました。手動でテストすると、応答コード403が表示されます。
curl -X PUT https://someurl.com/somecontext/somepage.xhtml
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /somecontext/somepage.xhtml
on this server.</p>
</body></html>
しかし、合理的なアプリスキャンでは、これが依然として問題として示されています。誰もが同じ問題に遭遇しましたか。このURLは、AJPを介してTomcatバックエンドに送られます。これに対する解決策をいただければ幸いです。
PS:LimitとLimitExceptを念頭に置いていましたが、mod_proxyまたはmod_jkを経由するリクエストをブロックするかどうかはわかりません
最後に働いたシンプルなソリューション
RewriteEngine On
RewriteCond %{REQUEST_METHOD} !^(GET|POST|HEAD)
RewriteRule .* - [R=405,L]
これにより、アプリのスキャンが幸せになります(そして私も)
ApacheはOPTIONS要求(潜在的にサポートされているメソッドのリストを取得する)をTomcatに転送していると思われます。次に、デフォルトのHttpServlet実装 doOptions
を取得します。これは、明らかにAllow
を含むTRACE
ヘッダーを返します。
doOptions
をオーバーライドして、この誤解を招くリストからTRACE
を削除できます。たとえば、Apacheに一致させる場合:
response.setHeader("Allow", "OPTIONS, GET, HEAD, POST");
または、他の機能(CORSプリフライトなど)が必要ないことが確実な場合は、OPTIONSを完全にブロックすることもできます。ちなみに、mod_rewrite処理チェーンにドラッグするのではなく、 Limit とmod_accessを使用して、目的のメソッドへのアクセスを制限することもできます。
または:TRACE
またはその他の使用可能な不要なメソッドが実際にないことが確実な場合は、検出結果を無視できます。 AppScanは、がのように見えることを警告しようとしていますmight危険な方法は利用可能ですが、実際にそのような脆弱性は見つかりませんでした。実際に機能しないOPTIONS
戻りメソッドを持つことは望ましくありませんが、実際のセキュリティ問題ではありません。
脆弱なHTTPメソッド[TRACE | TRACK | PUT | DELETE | CONNECT | OPTIONS]を無効にするために、最初にApacheのhttpd.confで以下のconfを設定しましたが、機能しませんでした。
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|PUT|DELETE|CONNECT|OPTIONS)
RewriteRule .* - [F]
ここで、以下のルールとその動作を設定しました。
Order allow,deny
Allow from all
<LimitExcept POST GET>
Deny from all
</LimitExcept>
AppScan、およびそれに関するすべてのスキャナーは、OPTIONSディレクティブを使用して、有効なメソッドを見つけていると思います。おそらく書き換えルールに追加する必要があります。
最善の方法は、ドキュメントを調べてこれらのメソッドを完全に無効にすることです。
乾杯、ザック