by Tan Chew Keong タン チュー ケオン
Release Date: 2006-08-23
[en] [jp]
概要
PowerZip
にバッファオーバーフローの脆弱性があります。悪意のある人は、この脆弱性を利用しPowerZipユーザのシステムに、任意のコードを実行ことがで
きます。
問題を確認したバージョン
PowerZip version 7.06 Build 3895.
問題
PowerZip
にバッファオーバーフローの脆弱性があります。それが、巧妙に細工された ZIP
ファイルをオープンするとき、バッファオーバーフローが発生します。悪意のある
攻撃者は、この問題を利用しWindows 2000 SP4 で、PowerZip
を実行するユーザの権限で任意のコードを実行できる可能性があります。
PowerZip が、異常に長いファイル名のファイルを含む ZIP ファイルを処理するとき、バッファオーバーフロー
は発生します。
バッファオーバーフローの脆弱性が PowerZip.exe の以下の似ているの function にあります。
func_50E1A0(arg_0, .., .., ..)
{
...
CString nameOfCompressedFile;
LVCOLUMN lvc;
...
lvc.mask = LVCF_SUBITEM;
SendMessage(hWnd, LVM_GETCOLUMN, arg_0->iCol, &lvc);
...
if(arg_0->someFlag != 1)
{
switch(lvc.iSubItem)
{
case 0:
if(arg_0->someStruct->someStruct2->someFlag != 0)
{
nameOfCompressedFile =
arg_0->someStruct->someStruct2->compressedFilenameCString;
}
else
...
break;
case 1:
CDTPath
var_180(arg_0->someStruct->someStruct2->CDTTimeVar.GetShortDate());
...
...
break;
case 2:
break;
...
...
...
}
// This causes a stack-based buffer overflow when the name of a compressed
// file (from a ZIP archive) is overly long.
strcpy(arg_0->stackBuffer, nameOfCompressedFile->GetBuffer(0));
nameOfCompressedFile->ReleaseBuffer(-1);
...
...
}
...
...
}
脆弱性のテストファイル
これは脆弱性のテストのためにファイルです。この ZIP ファイルは、バッファオーバーフローを利用し
calc.exe
を実行します。このZIPファイルは、英語版の Windows 2000 SP4 が必要です。
Instructions:
- Run PowerZip
- Click on the "Open" button or select "File->Open
Archive" from the menu.
- Select the POC ZIP file from the File-Open Dialog Box
and click "Open".
- Successful exploit will run calculator (calc.exe).
Failed exploit will crash PowerZip.
対策
Version 7.07 Build 3901 へのバージョンアップをしてください。修正版のダウンロード。
発見と報告の経緯
2006年08月10日 - 脆弱性の発見。
2006年08月12日 - ベンダに報告しました。
2006年08月18日 - ベンダは修正版をリリースしました。
2006年08月23日 - 本脆弱性の公開。