2008年10月30日木曜日

PHPのスクレイピングツールSnoopyにOSコマンドインジェクションの脆弱性

JVN#20502807: Snoopy における OS コマンドインジェクションの脆弱性

脆弱性を解消したバージョン1.2.4がリリースされている。

ver.1.2.3

$safer_URI = strtr( $URI, "\"", " " ); // strip quotes from the URI to avoid shell access
exec($this->curl_path." -D \"$headerfile\"".$cmdline_params." \"".$safer_URI."\"",$results,$return);

ver.1.2.4
exec($this->curl_path." -k -D \"$headerfile\"".$cmdline_params." \"".escapeshellcmd($URI)."\"",$results,$return);

影響があるのは、ユーザーが任意のURIを入力できる場合で、httpsスキームで始まり不正な文字を含むURIを入力された場合。(ダブルクォートのみは1.2.3でもエスケープされる。)
httpスキームの場合はこの関数(_httpsrequest())を通らないので影響無し。(httpの場合はcURLを使わずにsocketを開いてガリガリ書いている。)

ところでescapeshellcmd()でエスケープしているが、escapeshellarg()じゃなくていいんだろうか?

また、スクレイピングライブラリのhtmlSQLはSnoopyを内部的に使っているが、htmlSQLはhttpスキームのみを受け付けているので影響無し。(改造していない限りは。)

0 件のコメント:

ブログ アーカイブ

tags