パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

WindowsにおけるDLLハイジャック脆弱性、多くのメジャーなソフトウェアにも」記事へのコメント

  • Windowsの多くのソフトが危うくて危険が険しいと言うことですか。
    WebDavとかいうのが一番悪いというわけではなく、
    WindowsのDLL読み込み順序の仕様が致命的なミスを誘うようになってたと言うことですか?

    よくわからんのですが、例えばある解凍ソフトがあるDLLを使う場合に、
    そのDLLと同名の悪意を持ったDLLを解凍ソフトの.exeと同じフォルダに配置して、
    解凍ソフトを実行した場合に悪意を持ったDLLが読み込まれて問題が起きると言うことですか?
    その場合は.exeと同じ場所(もしくは環境変数で指定されている場所など)に
    悪意を持ったDLLを置かせないよう、気を付けていれば問題ないのですか?

    • by Anonymous Coward

      >解凍ソフトの.exeと同じフォルダ

      この場合、適当な圧縮ファイルをダブルクリックすると解凍ソフトが立ち上がると思うが、
      その時その圧縮ファイルと同じフォルダに悪意のある名前のDLLが有れば、それが実行されてしまう。
      そしてWebDavのおかげでそのフォルダがネットの向こうにあっても構わない。

      • by Anonymous Coward
        > その時その圧縮ファイルと同じフォルダに悪意のある名前のDLLが有れば、それが実行されてしまう。
        より正確に言えば、解凍ソフトの.exeが置かれているフォルダに目的とするDLLが存在せず、かつ、圧縮ファイルの置かれたディレクトリにその名前と同名の悪意のあるDLLファイルが置かれている場合、でしょ。DLLのサーチ順序は、カレントディレクトリよりもEXEファイルが置かれているディレクトリの方が先ですから。

        要するに攻撃者が攻撃を成功させるためには「.EXEのあるディレクトリから該当するDLLを削除したのちに」、悪意のあるDLLとそれをキックするための文書ファイルを送り付けなきゃいけないわけで、サーチ順序の最初にある「.exeが置かれているフォルダ」というのを無視した議論なんじゃないのかねぇ
        • Re: (スコア:1, 参考になる)

          > 「.EXEのあるディレクトリから該当するDLLを削除したのちに」

          それは不要でしょう。XPなんかだと、カレントディレクトリの方がシステムディレクトリや環境変数PATHの検索より優先順位が高いので、
          ・「Windowsのシステムが提供するDLL」などのシステムディレクトリにあるDLL
          ・複数アプリケーションで共有するためなどの理由で、EXEファイルとは別の、PATHの通ったディレクトリに置いてあるDLL
          については、同名のDLLによる差し替えが可能になります。それで十分驚異的。

          タレコミに上がっている実行例ではwab32res.dll が狙われています。

          • by Anonymous Coward on 2010年08月28日 0時03分 (#1816648)
            > XPなんかだと、カレントディレクトリの方がシステムディレクトリや環境変数PATHの検索より優先順位が高いので、
            だからこれが間違いだってば。なんでこの程度のこと確認しないの?

            すでに他の人にも指摘されているけど、Windows XPについてはSP2から、以下の順序でサーチされる [microsoft.com]んだってば。
            1. 実行されたEXEと同じディレクトリにあるDLL
            2. GetSystemDirectoryで得られるWindowsシステムディレクトリ
            3. 16bitシステムディレクトリ
            4. Windowsディレクトリ
            5. カレントディレクトリ

            要するに、この爆弾を起爆するには、カレントディレクトリよりも上位にある同名のDLLを全部削除しなきゃ駄目。少なくとも、XPsp2以降またはWindows2000sp4はね。

            親コメント
            • DLL不足で「hogehoge.DLLが見つかりません」とエラーが出る場合なら・・・まあ、原理的にはともかく、攻撃として成立するシチュエーションが皆無だから気にする必要は無いか。

              ・あるアプリが、DLL不足の状態でインストールされていて起動しない、もしくは、プラグイン不足のような形で特定の機能のみ使えない
              ・そのアプリが何らかの拡張子に関連づけされている

              という状況で、例えば、 不足しているDLLと同名の「悪意のあるDLL」と同じディレクトリに置いてある、その拡張子のファイルを開こうとすると、悪意のあるDLLが読み込まれる。

              動かないアプリになんかの拡張子が関連づけられたままPCを使ってるとか、にもかかわらずその拡張子のファイルを開けようとするとか、 問題となってるDLLの名前を悪意を持った第3者が知ってるとか、条件がいろいろと不自然だけど。

              強いて挙げるなら、その状況を作為的に作る事は出来そうな気もする。 例えば、

              ・「この動画を見たければ、再生ソフト○○をインストールすべし」と促すウェブページを作る
              ・促すソフトとしては、普通に流通しているフリーウェアからいくつかの条件を満たす物を選ぶ
              ・条件とは、「インストールするとデフォルトで拡張子.fooに対して関連づけされる」「プラグインのDLLを追加すると.foo形式のファイルの内、再生出来るコーデックが増える」
              ・「ソフトをインストールしたらこのリンクをクリックすると動画再生開始」のようなリンクを作り、リンク先をWebDavで公開された.foo形式のファイルにする
              ・リンク先は、追加のプラグインDLLが無いと再生出来ないコーデックな.foo形式のファイルで、同じWebDavフォルダ上には、偽の追加プラグインDLLが置かれている
              ・偽の追加プラグインDLLがロードされ、悪意のあったコードが実行される

              回りくどいけど。「これを我がウェブページからダウンロードしてインストールせよ」と言われると怪しいから絶対触らないけど、有名なフリーウェア紹介サイトへのリンクになっていれば怪しさ半減。ついでに、インストールさせるツールは何の細工もない優良なソフトウェアなので、ウィルスチェッカの類に検知されない。でも悪意を持ったDLLの方もウィルスチェッカの検査を通るだろうから脅威が大幅に増えるわけではないかな。

              # デフォルト設定のまま常用してるとあるツール、ある操作をすると
              # 「プラグインhogehoge.DLLが見つかりません」の類のエラーが出る。
              # このツールに対する攻撃をされるとちょっと危ないかな、とか思ったとこからの連想検討。
              # そのツールが、フィッシング詐欺やらのターゲットになるぐらいのシェアを持ってるかどうかは不明だけど。
              親コメント
              • by Anonymous Coward on 2010年08月28日 14時26分 (#1816790)
                残念ながら、有名どころも含めそれなりの数のアプリケーションが正常な状態でも存在しないまたはPATH上のDLLを実際にサーチしている、という記事です。
                ・なぜか存在していないDLLを探している(しかしエラーにならない)
                ・他所のDLLを利用しようとして失敗してる(けどエラーにならない)
                ・多言語対応でその言語版に存在しないDLLを探している(というか読めるDLLにより何言語版か決めている)
                ・Windowsの古いバージョンにしか存在しないDLLを探している(既にない機能への対応が残ってる)
                理由は色々あると思います。
                ・フリー/有料とか通常/上位版とか別アプリとの連携機能とかを取り合えずDLL呼んで成功/失敗で分けてる
                ・別アプリへのプラグイン追加でexeの場所が違うからPATHで対応/プラグイン呼び出しか否か判断/バグってるけどエラーでなくて気がついてない
                ・95/2000対応時代の古いコードを削除する必要がないからそのまま今でも残ってる
                とか。
                あと、攻撃手法もWebDav経由でドキュメント開くだけじゃなくて
                ・safariにある(あった?)プロンプトなしでファイルをダウンロードさせるバグと(同様のバグと)組み合わせるとデスクトップフォルダにdllを仕込むことでデスクトップのドキュメント開くと発動する様になる
                ・自分のFacebookのページと称して、カレントディレクトリを指定してoperaで開くショートカットを示し、operaがサーチするdllにより攻撃する
                があるそうだ。
                親コメント
            • by Anonymous Coward

              > 要するに、この爆弾を起爆するには、カレントディレクトリよりも上位にある同名のDLLを全部削除しなきゃ駄目。少なくとも、XPsp2以降またはWindows2000sp4はね。
              XP SP2以降はそのとおりですが、Windows 2000 SP4ではSafeDllSearchModeはデフォルト無効ってそのリンク先に書いてるみますよ。まあすでにサポート終了していて致命的な脆弱性も発見済みなのでどうでもいいですが。

            • by Anonymous Coward
              > 1.実行されたEXEと同じディレクトリにあるDLL
              > 2.GetSystemDirectoryで得られるWindowsシステムディレクトリ
              > 3.16bitシステムディレクトリ
              > 4.Windowsディレクトリ
              > 5.カレントディレクトリ

              で読み込まれるのに、では何故、C:\Program Files\Common Files\System
              にある Microsoft Address Book の DLL (wab32res.dll) が
              先に読み込まれずに、カレントディレクトリにある、不正な DLL を読み込んで
              しまうのでしょうか。
              • by Anonymous Coward

                っ GOLD

              • by Anonymous Coward
                C:\Program Files\Common Files\System は読み込み順序の中に入ってないからだろ。

皆さんもソースを読むときに、行と行の間を読むような気持ちで見てほしい -- あるハッカー

処理中...