Winnyの脆弱性は本当かも
# ことの始まりだけを追記
政府による情報操作説が流れているので少し調べた。
(個人的には、UNYUN氏がいうなら信頼できると思ってるけど・・)
オーバーフローする箇所があるみたい。
リモートからWinnyを異常終了させることが可能でした。
# 公開すんなということで内容は消しました。
# ただ、政府の情報操作説は誤り大げさで
# Winnyは本当に危険かもしれないということははっきりさせておきたい
#
# 実行ファイルは残しているけど、これを使ってどうこうはできないつもり。# Q. 実行ファイルを使って実証できないのはなぜか
# 1. port0ではない? ポートの指定はあっている?(batファイル)
# 2. グローバルIPアドレスが取れない?
# (自分から自分へつなげない? LAN内?)
# ただ、IPアドレスを指定できるようにすると非常にまずい。
# 3. 俺のマシンが特殊仕様!
# 動いた環境
# - Winny2.0b7.1 (DLしてきて、そのまま起動)
# - AirH"
# (グローバルIPアドレスが取得されて、そこへ繋ぎにゆく)
# (Winny側のaccept()から、グローバルIPアドレスが戻るので拒否されない【重要】)
#
# - WindowsXP SP2
# - ThinkPad X40
# LAN内だと動かないようなので。
# インターネットなしでも試せるローカル用のwinnydos2
# 実証だけしたい人は、これが確実に動く。
# IPアドレスは取得せずに127.0.0.1固定にして、
# Attackerをポート0ノードとして繋げて、
# 繋がった瞬間にパケットを送るバージョンです。
# 速すぎて画面上では確認できないかもです。
とりあえず、Denial of ServiceでリモートからWinnyを停止させることは間違いなく可能なので実証実行ファイル。
(影響を考慮して実行ファイルだけです)
WinnyDOS
影響を考慮して他のマシンに繋がらないように、プログラム内で自ホストのIPアドレスを取得しています。(localhost:127.0.0.1だとWinnyに弾かれるのでわざわざ取得します)
影響を考慮してポート番号はプログラム引数で指定。
実行すると、Winnyのノード情報のところに"Attacker"というクラスタのノードが2秒間ほど表示された後にWinnyが終了します。
影響を考慮して、実証実行コードは安全を心がけています。
- 追記
落ちているというより、書き換え検知して終了しているか、アクセス違反をハンドリングされている感じ。
- さらに追記
別。
WinnyDOS2
- 悪意のコード予防
Winnyに限った話ではないのですけど。
@IT:解説:Windows XP SP2で採用されたDEPの仕組み
万が一でも任意のコードを実行されないように予防。
コードはテキストセグメントに置かれて、そこは書込み禁止にされ、そこ以外のデータ(スタック、データ、ヒープ?)上にあるコードが実行されそうになるとストップ! らしい。
- こいつに追記
Winnyはパッカーかましているから、そもそもデータ領域にコードがあるので、DEPが働かない可能性があると、Winnyの実装のお粗末さを語るスレの人がゆってた。
- パッカーとDEPの詳細
不明。詳しいソースのない情報。展開したあとにアクセス権を変えていればDEP動くのでは?とさえ思う。
DEPで任意のコードを実行されることが防げるかどうかは、eEyeに公開してもらったほうがよさげ。
それで「任意のコード実行」が防げて、今回のことが単なる脆弱性の指摘なら、それで不十分ながら最低限の対応になると思う。
- XPのソフトウェアDEPで任意のコードを実行だけは防げそう
http://tmp6.2ch.net/test/read.cgi/download/1145777669/31
検証してくれた人がいる。
- 今回の件に対するパッチ
# http://tmp6.2ch.net/test/read.cgi/download/1142613933/
# http://tmp6.2ch.net/test/read.cgi/download/1145802645/ (↑の次スレ)
# 詳細はリンク先参照 (ここにのせると古くなる可能性があるので)
Winnyスレのほうでは、パッチがでているもよう。
ソースコードもついていますが、メモリパッチなので内容よくわかんないす。
自己の判断に基づいて使用というやつかと。
その他のツールと組み合わせる方法も議論されているみたい。
readme.txtを見る限りは、脆弱性のあるコマンド自体を受け取れないようになるらしい(たぶん、switchがコマンド分けている部分つぶしてるのかな・・)ので、これで、ここにあるwinnydosとwinnydos2は無効化されるが、WinnyBBSが使えなくなると思う。
こちらとしては、全部コードを見た上でwinnydosとwinnydos2を出したのではなく、ぱーとみて、2つ見つけたので2つ出しただけなので、本格的に対応やるなら、もう少し見直したほうがよさげ。鵜飼氏が言っているのとは別の可能性もある。(メモリアドレスで場所言われても俺わかんない・・)
- こいつに追記
スレのほうでは、きちんとバイト長チェックするパッチが出てきそうな雰囲気。ここで出している以外にも、問題があったようでそちらの対策も入るみたい。
- こいつにさらに追記
Lark氏のWinnypがバージョンアップされ、今回3箇所の脆弱性が修正されました。
詳細は、RinGOchのWinny本体スレ参照。(Nynode.info)
- 動き
2ちゃんねるでは、うそだといったり、信じなかったりが減って、Winnyはこのままではもうだめだとか、どうすれば攻撃が防げるか?という対策の方向へ進みつつあるようにみえる。
- その後
Nynode.info にパッチなどまとめられているもよう。