[Lha-users] Re: セキュリティホール

Zurück zum Archiv-Index

Michel Ishizuka cqw10****@nifty*****
2004年 9月 12日 (日) 18:16:42 JST


ごぶさたしてます。石塚です。

件のセキュリティホールについて大雑把に調べてみました。
調べたのは全部 CVS の HEAD 版です。

CAN-2004-0694
  http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2004-0694 を見て
も ** RESERVED ** とか書いてあって良くわかりません。

CAN-2004-0769
  autoconf版では以下のように header.c でサイズチェックを行っていて、
dir_length + name_length が大きすぎた場合はファイル名を削るようになって
ますので、たぶん大丈夫かと。
ちなみに、sizeof(hdr->name) == sizeof(dirname) です。

>    if (dir_length) {
>        if (name_length + dir_length >= sizeof(hdr->name)) {
>            warning("the length of pathname \"%s%s\" is too long.",
>                    dirname, hdr->name);
>            name_length = sizeof(hdr->name) - dir_length - 1;
>            hdr->name[name_length] = 0;
>        }
>        strcat(dirname, hdr->name);
>        strcpy(hdr->name, dirname);
>        name_length += dir_length;
>    }

CAN-2004-0745
  autoconf版では util.c に rmdir() が無くなってるので良くわかりません。

CAN-2004-0771
   http://www.securityfocus.com/archive/1/363418 に buffer overflow する
として例示されている部分は以下のように対策されているみたいです。引用され
てませんが、strcpy() も直前のコードを読むと、
strlen(q) * sizeof(char) < sizeof(name) が成立してるはずです。

>     if (extract_directory)
>        xsnprintf(name, sizeof(name), "%s/%s", extract_directory, q);
>    else
>        strcpy(name, q);

"i bet there is more" というのは、後は自分で探せって事なんだろうか?

-- 
//-------------------------------------------------
//  Michel Ishizuka      ( cqw10****@nifty***** )
//-------------------------------------------------

P.S.
セキュリティホール memo の 「-lh2- 形式のヘッダ」に幻惑されてしまいまし
た。-lh2- には -lh3- や -lh5- みたいなブロックヘッダなんかないはずだし、
パス名関係無いはずだし。良く考えると多分 -h2 の事だと思うんですが。




Lha-users メーリングリストの案内
Zurück zum Archiv-Index