OS Ubuntu Ubuntu 16.04.2 LTS Apache/2.4.18 Perl v5.22.1
ですから、mysqlデータベースを読み取り、動的なWebページを作成するPerlコードがあります。コードは何年もの間、うまく機能しています。 1週間前、私のクライアントが電話をかけ、500の内部サーバーメッセージを受け取っていると言っています。調べてみたところ、すべて問題ないようですが、ページを読み込もうとすると、500エラーが発生します。 Apacheエラーログには、次のエラーがあります。
[Tue May 30 22:16:13.144199 2017] [http:error] [pid 12487] [client 99.99.99.99:55628] AH02429: Response header name '<!-- warning' contains invalid characters, aborting request
誰かがこれを見たことがありますか?それを引き起こしているものについて何か考えがありますか?
無効な文字を含むキーヘッダーがあります。セキュリティ修正CVE-2016-8743までは問題になりませんでした。
https://blog.tigertech.net/posts/Apache-cve-2016-8743/
私の場合、wasApache + PHPと ":"の前の空白は "X-CUSTOM-KEY:"のようになり、ヘッダーを変更する以外の解決策は見つかりませんでした。
バグのあるJavaアプリケーションが「場所: http://foo.bar \n」を返すアプリケーションでこの問題が発生しました(\n
最後に)。
問題を解決するためのアプリケーションソースコードにアクセスできなかったため、Apacheに mod_header を使用してヘッダーを修正するように指示することで回避策を実行する必要がありました
解決策は:
Header edit Location "\n$" ""
私はいくつかのテストを行い、<!-- warning: teste
ヘッダーを返すアプリケーションを作成し、次のディレクティブを使用してそれをApacheで解決しました。
Header always unset "<!-- warning"
アプリケーションを修正できない場合は、Apacheがヘッダーを削除または修正できます。
@GroGzが言うように、この問題はほぼ確実にCVE-2016-8743の修正によって引き起こされます(または公開されています)-HTTPヘッダーの解析は、2016年12月20日にリリースされたApacheの更新でより厳密になりました(詳細は- https://httpd.Apache.org/security/vulnerabilities_24.html )。 Perlスクリプトが「warningsToBrowser」サブルーチンを含むモジュールCGI::Carp
を使用している可能性があります。このサブルーチンは、コードの問題によってトリガーされた警告を、HTTPDログに記録するだけでなく、プログラムの出力に埋め込まれたHTMLコメントに入れます。このサブルーチンは次のようにトリガーされます。
warningsToBrowser(1);
HTTPヘッダーが完全に送信される前にトリガーした場合、説明したものと同様のエラーが表示されます。
簡単な修正は、次のいずれかが発生していないかコードを検索することです。
warningsToBrowser(1);
それを次のように変更します。
warningsToBrowser(0);
これにより、警告メッセージはSTDERRにのみ送信されます(ほとんどのHTTPDサーバーと同様に、ApacheはSTDERRをサーバーのエラーログに送信します)。 「コードは何年もの間うまく機能している」と言っているので、警告はそれほど深刻ではない可能性があります。詳細については、 http://perldoc.Perl.org/5.8.9/CGI/Carp.html#MAKING-WARNINGS-APPEAR-AS-HTML-COMMENTS を確認してください。