IPA(情報処理推進機構)は21日、ファイル共有ソフトWinny(ウィニー)にバッファオーバーフローの脆弱性が見つかったことを明らかにした。同機構は、開発者による修正方法は公表されていないため、回避方法は「Winny利用の中止」であるとしている。
今回公表された脆弱性は、米国のセキュリティベンダーeEye社の指摘によるもの。同社のアドバイザリによると、「Winny 2.0 b7.1」およびそれ以前のバージョンのファイル転送で、コマンドの扱いに起因するヒープベースのバッファオーバーフローが発生。Winnyの実行権限でコードが実行されるという内容だ。
同社は先月22日、同脆弱性をIPAに通知したところ、Winnyの開発者がコードの実行は不可能だと主張しているとの返答があったという。同社は今月11日、脆弱性とその利用方法に関する詳細な情報を送付。16日に、開発者は諸般の事情により脆弱性を修正することができないとの返答があり、21日、IPAの脆弱性公開に続きアドバイザリを掲載した。
脆弱性の対応状況を公開するJVN(JP Vendor Status Notes)によると、開発者は「諸般の都合により、Winnyのアップデートおよび脆弱性の具体的な検証が困難な状況にある」とし、「現時点では具体的な攻撃方法が明らかではなく、仮に攻撃を受けても、あらゆる任意のコードが実行が可能というわけではないと判断している」とコメントしている。
【解説:バッファオーバーフロー】
用意したメモリ領域を超えてデータを書き込んでしまうプログラムの欠陥を「バッファオーバーフロー(Buffer Overflow)」という。これを利用した最も単純な攻撃は、そのプログラムをクラッシュさせ、DoS(Denial of Service:サービス拒否)を引き起こすタイプだが、同脆弱性はコードの実行を可能にする極めて深刻な側面をもつ。
プログラムの戻りアドレス等が格納されている領域を「スタック」という。このスタック領域で起こるバッファオーバーフローは、コードのロードと実行を同時に直接行えるため、脆弱性はただちに深刻な事態を招く。
プログラムが必要に応じて確保するメモリを「ヒープ」という。ヒープ領域で起こるバッファオーバーフローは、コードの実行には直結しないため、発見当初はしばしばDoSを引き起こす問題として報告される。が、ある種のメモリ操作が可能な場合には、こちらもコード実行に結びつく。
Windows XP SP1/SP2では、DEP(Data Execution Prevention:データ実行防止)と呼ばれるバッファオーバーフローによるコード実行を防ぐ機能を搭載している。ソフトウェアあるいはハードウェアによって、スタックやヒープ領域のコード実行を防止する機能だ。ソフトDEPでは限定的な、ハードDEPではより強力な防止機能を提供し、脆弱性攻撃に対するリスクを軽減する。ただし、DEPによって全ての攻撃を回避できるわけではなく、これを迂回する攻撃方法も登場している。
通信処理そのものに関わる今回の脆弱性では、Winnyを起動しているだけで外部から任意の、あるいは限定的なコード実行の攻撃を受けることになり、プログラムが修正されない以上、回避策はない。
(2006/04/24 ネットセキュリティニュース)
■Winny(ウィニー)の安全上の問題箇所(脆弱性)の公表について(IPA)
http://www.ipa.go.jp/security/vuln/200604_winny.html
■JVN#74294680:「Winny」におけるバッファオーバーフローの脆弱性(IPA)
http://www.ipa.go.jp/security/vuln/documents/2006/JVN_74294680_winny.html
■JVN#74294680:Winny におけるバッファオーバーフローの脆弱性(JVN)
http://jvn.jp/jp/JVN%2374294680/index.html
■Winny Remote Buffer Overflow Vulnerability[英文](eEye Didital Security)
http://www.eeye.com/html/research/advisories/AD20060421.html