### Micco's Home Page ### Welcome to Micco's page!!
Sorry, but this web page is written in Japanese.
<English>
■ 更新情報
■ このWebページについて
■ お知らせ
■ ダウンロード
■ DLL のインストール方法
■ SFX の設定例
■ いろいろ
対応ブラウザー
[Internet Explorer] [Firefox] [Opera] [Sleipnir] [Safari] [Google Chrome]
連絡先:Micco
[e-mail]
[→『脆弱性情報一覧』] [→Home]

<公開:Oct.19,2006>

MHSVI#20061019-02:
LMLzh32.DLL におけるヒープオーバーフローの脆弱性

 このページは『LZH 書庫のヘッダー処理における脆弱性について』で記述されている内容を LMLzh32.DLL の脆弱性情報として再構成したものです。


概要

 LMLzh32.DLL は, LZH 形式に対応した圧縮・展開等の書庫操作を行うライブラリーです。 LMLzh32.DLL にはヒープオーバーフローの脆弱性が存在します。

影響を受けるモジュール及びシステム

  • LMLzh32.DLL Ver 0.09.1.6 及びそれ以前
  • 上記が付属している LHMelt Ver 1.52.3.13 及びそれ以前

詳細情報

 LMLzh32.DLL は, LHMelt に付属している, LZH 形式書庫に対して圧縮・展開といった操作を行うためのライブラリーです。 LMLzh32.DLL は LHMelt から呼び出される形で使用されますが, ヒープオーバーフローの脆弱性が含まれており, 細工された h0 及び h1 形式書庫ファイルに対して何らかの操作を行うことによって, 任意のコードを実行されたり, サービス運用妨害 (DoS) 攻撃を受ける可能性があります。

想定される影響

 呼び出し時点での LHMelt の動作状況にもよりますが, 当該ユーザーの権限で任意のコードを実行されたり, サービス運用妨害 (DoS) 攻撃を受ける可能性があります。

対策方法

 LHMelt について, Ver 1.53 以降へバージョンアップを行ってください。 [ダウンロード]

技術情報

 本脆弱性は, ヘッダーのレベルが 0 もしくは 1 の LZH 書庫において, 基本ヘッダーと拡張ヘッダーの合計サイズが非常に大きいメンバーを読み込んだ場合に発生します。 以下の関数にヒープオーバーフローが存在します:


LPSTR gethdr(LPINT err, BOOL bMode)
{
    ...
    LPBYTE p;
    DWORD extsize;

    ...
    switch(hpb.level) {
      case 0:
      case 1:
        ...
        while ((extsize = ConvWORD(p)) != 0) {
            if (readarc(p + 2, extsize) < extsize) {
                ...
                goto errend;
            }
            ...
            p += extsize;
        }
        ...
        break;
      ...
    }
    ...
    return hpb.pathname;
}
	  

 上記関数により, 読み込み位置に存在するメンバーのヘッダー情報を取得しますが, 適切なバウンダリチェックを伴わずにバッファーの書き込み位置を更新している (p += extsize;) ため, 基本ヘッダーと (複数の) 拡張ヘッダーの合計サイズが 8,192 バイトを超えることで, 実際に書庫からの読み込みを行う readarc() 関数内でヒープオーバーフローが発生します。

 ヘッダー用バッファーの直後には,ヘッダー読み込みの時点では使用されない 512KB のスライド辞書領域が存在するため, 実際には約 520KB を超えるまでは現象が表面化しません。

 近傍に関数・データーポインターを含んだ比較的普遍的なバッファー領域が存在していないことから, 汎用的な攻撃書庫の作成は難しいと思われますが, 対象を絞れば exploit 条件へ達すること自体は比較的簡単に行えます。 クラッシュだけで良いのであれば, より簡単に引き起こせます。

参考情報

[→Page top] [→『脆弱性情報一覧』] [→Home]