アカウント名:
パスワード:
でも標準SHELLをbashにしてる環境が多すぎたり、入力データをまんまSHELLに投げてるプログラムとかテスト不足のWebServerを代表とするdaemon群が一番悪い気がするんだがなぁ…
テスト不足のWebServerを代表とするdaemon群が一番悪い気がするんだがなぁ…
今回のバグは、bashが環境変数中に仕込まれたコードを実行してしまう、というものです。そして、リクエスト中のヘッダフィールドを環境変数として渡すことは、CGIの仕様によって要求されています(RFC 3875 [ietf.org])。したがって今回の脆弱性は、Webサーバが仕様通りに動作することがテストされていたとしても、回避することはできません。
攻撃っぽいフィールドを弾いてほしいところかも知れませんが、それは汎用のWebサーバではなくWAFの役割だと思います。
> リクエスト中のヘッダフィールドを環境変数として渡すことは、CGIの仕様によって要求されています
その仕様がバグだってことだな。
クライアントから送られてくるデータを無条件に受け付けるってどんだけお花畑なんだか。
クライアントから送られてくるデータに不穏当なものがないか検査する機能を提供すべきなのは、そのデータを受け付けるプログラムでしょ。
そういう機能を提供せずに他の実行ファイルを呼び出すというというのはバグというより無責任だな。
今回の場合、送られてくるデータを不適切だという解釈をbash以外のプログラム(たとえば httpd)がすることは可能なんでしょうか。正当なデータも通らなくなったりとか不都合が起きたりしない?
> クライアントから送られてくるデータに不穏当なものがないか> 検査する機能を提供すべきなのは、そのデータを受け付ける> プログラムでしょ。
そうですね、外部データをチェックするのは「CGI 仕様」ではなく「CGI プログラム」が提供するべき機能ですね。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
クラックを法規制強化で止められると思ってる奴は頭がおかしい -- あるアレゲ人
bashのBugではあるんだけど… (スコア:0)
でも標準SHELLをbashにしてる環境が多すぎたり、入力データをまんまSHELLに投げてるプログラムとか
テスト不足のWebServerを代表とするdaemon群が一番悪い気がするんだがなぁ…
Re: (スコア:2)
今回のバグは、bashが環境変数中に仕込まれたコードを実行してしまう、というものです。そして、リクエスト中のヘッダフィールドを環境変数として渡すことは、CGIの仕様によって要求されています(RFC 3875 [ietf.org])。したがって今回の脆弱性は、Webサーバが仕様通りに動作することがテストされていたとしても、回避することはできません。
攻撃っぽいフィールドを弾いてほしいところかも知れませんが、それは汎用のWebサーバではなくWAFの役割だと思います。
Re:bashのBugではあるんだけど… (スコア:0)
> リクエスト中のヘッダフィールドを環境変数として渡すことは、CGIの仕様によって要求されています
その仕様がバグだってことだな。
クライアントから送られてくるデータを無条件に受け付けるってどんだけ
お花畑なんだか。
Re: (スコア:0)
別にどんな文字列だろうと評価しなければ何の害にもならないし。
Re: (スコア:0)
クライアントから送られてくるデータに不穏当なものがないか
検査する機能を提供すべきなのは、そのデータを受け付ける
プログラムでしょ。
そういう機能を提供せずに他の実行ファイルを呼び出すというと
いうのはバグというより無責任だな。
Re: (スコア:0)
今回の場合、送られてくるデータを不適切だという解釈をbash以外のプログラム(たとえば httpd)がすることは可能なんでしょうか。
正当なデータも通らなくなったりとか不都合が起きたりしない?
Re: (スコア:0)
CookieとRefererは「変なデータ」なので、きちんとチェックするhttpdがもし存在すれば
400 Bad Requestを投げるようなことは可能だったかもしれません。
そんな実装のhttpdはたぶん存在しなかったと思いますが。WAFにはあったりするかも。
User-Agentは今回のを決め打ちで弾くようにするとかじゃないと無理っぽい気がします。
Re: (スコア:0)
> クライアントから送られてくるデータに不穏当なものがないか
> 検査する機能を提供すべきなのは、そのデータを受け付ける
> プログラムでしょ。
そうですね、外部データをチェックするのは「CGI 仕様」ではなく「CGI プログラム」が
提供するべき機能ですね。
Re: (スコア:0)
HTTPdが検査はまあできなくもないですが、事前情報が無い段階では「User-Agent: (){:;}; echo hoge」とかいうのは
「見かけないけど別におかしくはない」文字列に見えます。
bashが「よくわからないデータ」を「検査もせずに」「勝手に解釈」しなければ問題なかったんですよ。