Critical Vulnerability in Waitress WSGI Server: CVE-2024-49768 – What You Need to Know
2024/10/31 SecurityOnline — Python プロジェクトが公表したのは、Waitress WSGI (Web Server Gateway Interface) Server の脆弱性 CVE-2024-49768 (CVSS:9.1) に対処する、セキュリティ・アドバイザリのリリースである。この脆弱性は、Waitress を使用するアプリケーションにおいて、特に安全で安定したパフォーマンスが不可欠な実稼働環境において、きわめて深刻な懸念事項となる。

Waitress は、実稼働 Web アプリケーションで多用される、純粋な Python WSGI Server である。優れた性能と互換性で評価され、Unix/Windows プラットフォームの開発者にとって、とても頼りになるサーバ・ソリューションとなっている。Waitress は、きわめて高い許容力と性能を備え、プロダクション環境に適応できる、純粋な Python WSGI Server である。また、その依存関係については、Python 標準ライブラリに存在するものに限定されている。Waitress は CPython/ PyPy 3 などの複数の環境をサポートし、HTTP/1.0 と HTTP/1.1 をサポートするという、高い汎用性を持つ。
CVE-2024-49768 は、HTTP パイプライン処理で発生する、リクエスト処理の競合状態に起因する。具体的に言うと、リモート・クライアントが1番目のリクエストとして、recv_bytes (デフォルトでは 8192 Byteに設定) と同一のリクエストを送信し、その直後に2番目のパイプライン・リクエストを送信することで、競合状態が発生する可能性がある。リクエストの先読みが有効化されているシナリオでは、最初のリクエストの解析が失敗した場合であっても、この2番目のリクエストが誤って処理される可能性がある。
Python のアドバイザリには、「リクエストの先読みが無効化されている場合 (デフォルト) には、それ以上のリクエストは読み込まれず、1番目のリクエストが解析エラーにより失敗すると、接続が閉じられる。ただし、リクエストの先読みが有効化されている場合には、1番目のリクエストを処理して受信し、2番目のリクエストを読み取ってキューに入れている間に、エラー メッセージをクライアントに送り返すことが可能となる。このエラーにより、2番目のリクエストが標準の解析チェックをバイパスして、ワーカー・スレッドで処理される可能性が生じるが、理想的には、接続が終了されるべきである」と詳述されている。
この脆弱性を特定/開示した、Qi’anxin Group の TianGong チームの m4yfly と urn1ce に、Pylons プロジェクトは謝意を述べている。
すでに、Waitress バージョン 3.0.1 がリリースされ、競合状態の根本的な修正が完了し、二次リクエストが誤って処理されないようになっている。 Pylons プロジェクトが、すべてのユーザーに推奨するのは、このバージョンへと速やかにアップデートし、潜在的なエクスプロイトからアプリケーションを保護することだ。
すぐにパッチ適用が不可能なユーザーのために、Pylons プロジェクトは、”channel_request_lookahead” を無効にするための一時的な回避策を提供している。
そこアドバイザリには、「デフォルトで 0 に設定されている、”channel_request_lookahead” を無効化する。この脆弱性の場合、この値をデフォルト値から変更する必要がある。この “lookahead” の無効化により、リスクは消えていくが、最も効果的な保護策がアップグレードであることに変わりはない」と記されている。
Python の Waitress WSGI Server に存在する、脆弱性 CVE-2024-49768 が FIX しました。深刻度が高いご利用のチームは、ご注意ください。Web Server Gateway Interface を Wikipedia で調べてみると、その重要さが伝わってきます。よろしければ、Python で検索も、ご参照ください。
You must be logged in to post a comment.