PHPサーバーに感染するワームPhpInclude.Worm登場 40
ストーリー by koyhoge
allow_url_fopen=Offにしよう 部門より
allow_url_fopen=Offにしよう 部門より
lss 曰く、 " IT Proの記事によると、 PHP 4/5を利用しているWebサーバーに感染するワーム「PhpInclude.Worm(Santy.e)」が出現したという。 これは以前に報告されたphpBBのセキュリティ・ホールを突くものではなく、 PHPの一般的なプログラムミスを突いてサーバーに侵入するワームであるとのこと。
具体的には,PHPの関数「include()」や「require()」を不適切に使うことで発生する問題「File Inclusion Flaw」を悪用する。 PHPを利用するWebサーバーの管理者は注意が必要だ。"
WebアプリケーションにとってPOST/GET入力値のチェックは基本中の基本だが、その辺で手を抜いていると今回のようなトラブルに見舞われることになる。PHPには変数汚染の概念はないが、入力値のサニタイズはきっちりやることを心がけたい。
/tmpをチェックしておこう (スコア:3, 参考になる)
えりゅふ
よくきたblog [blog.poyo.jp]
PukiWikiの場合 (スコア:3, 参考になる)
Anti-Santy-Wormに期待? (スコア:1)
http://www.itmedia.co.jp/news/articles/0501/01/news003.html
というか、どういう意図で、このワームが配付されてたのか、よく分らん
Re:Anti-Santy-Wormに期待? (スコア:2, 興味深い)
「私は正義のハッカーだ!クラッカーの魔の手から世界を守るのだ~♪」
て自己主張かも。
それにほら,就職に有利になるかも知れないし(笑)
Re:Anti-Santy-Wormに期待? (スコア:1)
マジレスすると、このような [google.co.jp]事例はありましたが。
名物に旨いものなし!
Re:Anti-Santy-Wormに期待? (スコア:1)
お節介焼いてくれるタイプのは他にも探せばありそうです。
しもべは投稿を求める →スッポン放送局がくいつく →バンブラの新作が発売される
まだ終わってない (スコア:1, 興味深い)
include($_GET['page']);
のようにあからさまなコードは見たことがありませんが、同じ問題に根ざした脆弱性は時々見かける事があります。
変数汚染をかけてフラグをクリアしていく必要がある、加工後の値を予測して攻撃手段となる外部変数を組み立てる必要がある等攻撃方法がローカルになっているだけで、サイトやアプリケーション単位で個別に狙い打ちされるとあっさり落ちます。
他人事とは思わず、心当たりは無いかこの際振り返って欲しい物です。
やれフィッシングやワームやで騒いでも、その後ろで次の問題の種となる脆弱性をせっせと作り続けるプログラマやそれを看過する開発体制が変わらない事には内容を変えて問題が繰り返されるだけかと。
ほら、あなたの使ってるそのコードにも新たなる次のワームが…
Re:まだ終わってない (スコア:0)
作ったコードをオープンソースにすれば全て解決。
#なんてこれっぽっちも思ってないのでAC
Re:まだ終わってない (スコア:0)
hoge.hoge/?main.php=hogehoge
のようなユニークIDを含んだURLを踏ませて、個体識別番号なるものを吐く様式が大部分になりつつあるし。
脆弱性を直さないユーザ (スコア:1, 興味深い)
Windowsユーザはいなくならないわけですが、Windowsの脆弱性に対する修正パッチを
当てないユーザと比べて、脆弱性を修正しないヘボ開発者とそのソフトを使い続ける
ユーザはオープンソースならすぐいなくなるでしょうか?
開発者が放置する可能性も高いわけで、オープンソースだから自分で修正すれば
良いということになるとは思います。
しかし、そもそも自分で問題を直せるスキルのある人は、そんなソフトは
使わずに自分で作るか、もっとまともなソフトを使うでしょう。
そうなるといつまでも脆弱性が修正されず、自力でも修正できない。
できることは使用をやめるか、脆弱性を抱えたまま使用し続けるしかない、
そういうユーザも多いはず。
オープンソースのソフトウェアを採用するということは、そういうリスクを
負うのだということをよく理解しておくべきかと思います。
深く考えず「オープンソースソフトを採用すると何だか知らないが褒められるらしい」
というだけで採用するようなところさえ少なからずあるような気がして、
不安を感じていました。
今回のワームはそのような危惧を具現化する岐路にあるものではないのかと
個人的には特に心配しています。
Re:脆弱性を直さないユーザ (スコア:1)
>そういうユーザも多いはず。
>
>オープンソースのソフトウェアを採用するということは、そういうリスクを
>負うのだということをよく理解しておくべきかと思います。
オープンソースの比較対照としてクローズドソースを出しているようだが、クローズドソースでも「できることは使用をやめるか、脆弱性を抱えたまま使用し続けるしかない」のは一緒。
ちなみに、ライブラリーとかまで自分で作らなければ、自作でも技量が無ければ脆弱性を修正できないことはあるよな。でも、クローズドソースは技量があっても手出し出来ない。
ちなみに、今書いている端末MSのwinXPだけど、 http://support.microsoft.com/kb/886677/ のパッチ入れたらsjis文字化けしなくなった。
MSがパッチ提供してくれなければ俺にはどうすることも出来なかっただろう。
オープンソースだと技量が無くても「文字化けする」と叫んだり「誰かパッチ作ってくれ」と頼んだり出来る気がする。
「そういうリスクを負う」のではなく、「リスクがヘッジされる」のでは?
ちなみに、文字化けは http://nx.sakura.ne.jp/~chanbaba/bbs/t/t/test/112/xpnusg/xpnusg.html を表示して、「ctrl+更新」で出た。「更新」だと出ない。
Re:脆弱性を直さないユーザ (スコア:0)
> 脆弱性を修正しないヘボ開発者とそのソフトを使い続ける
> ユーザはオープンソースならすぐいなくなるでしょうか?
誰もそんな保証はしない。
性格上そういう問題にうるさいのは多い。
でも、実際に修正される、対処をする、というのは別の問題で、プロプラなソフトとほぼ変わらない。
> 開発者が放置する可能性も高いわけで、オープンソースだから自分で修正すれば
> 良いということになるとは思います。
> しかし、そもそも自分で問題を直せるスキルのある人は、そんなソフトは
> 使わずに自分で作るか、もっとまとも
Re:脆弱性を直さないユーザ (スコア:0)
みたいなおしえてくんが、むやみやたらにXOOPSやPukiWiki入れたりしてるので
その心配はある。
分からないなら使うな!くらいは言ってもバチはあたらないと思う。
んが、
>し
Re:脆弱性を直さないユーザ (スコア:0)
「オープンソースソフトウェアも開発停止になることはある。すると脆弱性の解決はユーザに委ねられる。そのときにユーザ側に対処できる人が居ない可能性まではあまり考慮されていないのではないか。」
私にはもっともな話に思えます。ただし開発が停止すると手
引数にファイルネームを指定する感じ? (スコア:0)
include($var);
みたいなプログラムミスを狙うワームだと理解してOKですかね?
こんな危ないプログラム書く人もそうそういなさそうな気がするけど・・
Re:引数にファイルネームを指定する感じ? (スコア:0)
らしいんで、OFFだったら問題ないかと。
Re:引数にファイルネームを指定する感じ? (スコア:4, 参考になる)
紛らわしいのはPHPにおける*変数汚染*とは外部からの引数とスクリプト内部で使用する引数が混じって使われる状態(register_globals=ON)を指していたような気がするわけでして。
例えば次のスクリプト admin.php が存在している場合。($adminは初期化されてないとすると)
if( auth( $id, $pwd ) == true ){
$admin = 1; //フラグを立てる
}
if( $admin ){
// adminなコード
}
これは admin.php?id=hoge&pwd=hoge という利用を想定しているのですが、もしも悪意ある人間が admin.php?admin=1 といれると*フラグが立ったこと*になって、adminなコードが走っちゃうっていうのが、これまでの*PHPの変数汚染*だったような気がします。
そこで、register_global=OFFって奴にすると、このような外部の引数と内部のフラグを分離できて
if( auth( $_GET["id"], $_GET["pwd"] ) == true ){
$admin = 1; //フラグを立てる
}
if( $admin ){
// adminなコード
}
となるから、 admin.php?admin=1 とされても問題ないーっていう感じだと思います。
で今回の変数汚染という考えは、これとは別でして。そもそも外部からの引数を渡すという点は(自動にしろ手動にしろ)製作者が意図した通りなのですが、その渡されるデータが必ずしも意図した値になるとは限らないから、注意しろっていう事だと思います。例えば引数を読み込んで実行する時に
include_once( $_GET["page"] );
で page.php?page=test.php なら test.php を読み込む。んで、page.php?page=/etc/passwd なら?? という状況を想定して対処しろみたいな感じだと思います。
長文かつ、乱雑な点ご容赦ください。
では失礼します。
Re:引数にファイルネームを指定する感じ? (スコア:1)
- ベタなものは open_basedir の指定だけでたぶん防げます。
- PHP: セーフモード - Manual [php.net] を調べると案外工夫できることが分かります。
- ステップバイステップでApache + PHP をセキュアに [lovemorgue.org] (愛の死体安置所にあるセキュリティフォーカスの記事の翻訳)も参考になると思います。
- mod_security については @IT:Webアプリケーションに潜むセキュリティホール(11) [atmarkit.co.jp] から始まる記事が参考になるかと。
ただ、自分はどれもやったことはないんですけどね。
Re:引数にファイルネームを指定する感じ? (スコア:1, 参考になる)
変数汚染の概念がない? (スコア:0)
外部から与えられた変数をファイル関数に直接渡すと「エラー」が発生する機構がないという意味なのでしょうか?
そうではなく、汚染された変数が存在しないという意味ならば、そもそも論理が成り立たないように思われます。
って言ったみたけど、素人考え臭いのでヘタレ腰のAC
Re:変数汚染の概念がない? (スコア:5, 参考になる)
PerlのTaintモードやRubyのように、外部から与えられたデータには「汚染フラグ」がついていて、特定の関数にそのまま渡すとエラーになる仕組みを言っています。
PHPではそもそも、変数が汚染されているかどうかという区分を処理系が持っていないので、プログラム作成者にすべてがゆだねられています。「処理系としての汚染検出」とでも言えばよかったでしょうか。まぎらわしい言葉を使ってしまってごめんなさい。
Re:変数汚染の概念がない? (スコア:0)
という気がしないでもない。
Debian GNU/Linux RC4 (スコア:0)
Debian GNU/Linux r4 (スコア:0)
Debian GNU/Linux 3.0 r4 (スコア:0)
えーと (スコア:0)
(/etc/passwd)
〒-
氏名欄が入力されていません。ブラウザの戻るボタンで戻って内容を訂正して下さい。
郵便番号欄が入力されていません。ブラウザの戻るボタンで戻って内容を訂正して下さい。
住所欄が入力されていません。ブラウザの戻るボタンで戻って内容を訂正して下さい。
電話番号欄が入力されていません。ブラウザの戻るボタンで戻って内容を訂正して下さい。
メールアドレス欄が入力されていません。ブラウザの戻るボタンで戻って内容を訂正して下さい。
ご注文数量が入力されていません。ブラウザの戻るボタンで戻って内容を訂正して下さい。
こんなのが表示されるんですけど、どうすればクラックできますか?
Re:えーと (スコア:0)
Re:えーと (スコア:0)
Re:教えて分かる人 (スコア:1)
10万件のレコードは、例えばどれくらいの件数がどれくらいのペースで更新されるのか。それともほとんどがただ参照されるだけなのか。10万件といってもそのレコードのカラムはどういう構成なのか。利用されるのはどのような場面で、どのようなユーザが相手なのか。
最低の最低でも、これくらいのことがわからんと誰にも何も言えない。誘導でもできない。口調はともかく、質問の内容がひどいので教えたくても何もできない。以上。
Re:教えて分かる人 (スコア:0)
件数はほとんどなすです。
人数もほとんどなす。
作ってみたいっての本音です。
データを蓄積すて、辞書の索引のように引き出せるもの。
恐らく。英語だったり漢字の部分、検索用のひらがな読み
簡単な説明。これくらいの件数のレコードだと思い
Re:教えて分かる人 (スコア:1)
まずOSのインストールからだなあ。でもPHPならWindows環境でも作れるけどね。UTF-8で作るんであれば別途用意しなくてもPHP5に付属のSQLiteで十分かと。それなら新しい赤マンモス本でいけます。
なんだかんだいってこのスレッドには正月からおせっかいな暇人が集まった感じだね。
Re:教えて分かる人 (スコア:0)
なんだか、素でやってるというよりは演技にしか見えないんだけど?
個人使用で安定性要らないんだったら自己責任だけどさ、その仕様だと、まずはwebサーバの立ち上げの方が先じゃない?
Re:教えて分かる人 (スコア:0)
とりあえず、プロトタイプのつもりでコード書いたらどうか。
アレコレ悩んでも仕方ない。
別に仕事でやろうって訳じゃないのだろう?
#この前までアレコレ悩んでたので人の事言えないが
>Linuxの debianはビデオ
Re:教えて分かる人 (スコア:1)
>woddyのデフォルトでインストールされるカーネルは、APMがoffになってる。shutdown -h nowしても電源切れない。
>sargeとかはしらん。
APMがoffじゃなくてモジュールになってます。
modconf
で、一番下にある
kernel/arch/i386/kernel
にあわせて、apmにあわせてEnterを押してからそのままEnter押し続ければ、
APMモジュールがロードされて電源が切れるようになります。
Re:教えて分かる人(オフトピ:-1) (スコア:0)
うちの古いノートマシンに入れてるwoddy(Kernel2.2.20?)には、
apmモジュールなんて見当たらないし、
modconfにkernel/arc/i386...なんて項目無いようです。
で、lilo.confでappend="apm=on"とかヤレ、
とどっかで読んだので、それで電源切れるようにしてます。
これのapm絡みはカーネル組み込みなんでしょう。
apm=onの状態でlsmodしてもapmモジュールが出てきません。
s
Re:教えて分かる人(オフトピ:-1) (スコア:1)
うちのWoddyの1つは都合上Kernel2.4(bf2.4フレーバー)でカーネルをまだ入れ替えてませんでした。
$ cat /boot/config-2.4.18-bf2.4 |grep APM
CONFIG_APM=m
CONFIG_APM_CPU_IDLE=y
なんて出るので2.2のsargeやwoddyはカーネル組み込み、
bf2.4なWoddyはモジュールで分離なのかも。
# もしかして、ACPIでの絡みで分離したのか?
Re:教えて分かる人 (スコア:1)
PHPからアクセス可能なDBは色々あるけど、OSも不明では何も薦められないね。
提案以前の問題だと思うんだけど。
電源の問題だけなら、多分、BIOSの問題。そうとしか言えない。
Re:教えて分かる人 (スコア:0)