パスワードを忘れた? アカウント作成
13528599 story
セキュリティ

Skypeのアップデート機能にDLLハイジャッキング脆弱性が見つかる 24

ストーリー by hylom
今度はSkypeか 部門より
あるAnonymous Coward曰く、

Skypeのアップデート機能に脆弱性があることが判明した。攻撃者がこの脆弱性を利用すれば、特権を持たないローカルユーザを完全なシステムレベルの権限に昇格させ、OSのあらゆる場所にアクセスが可能となるという。発見したのはセキュリティ研究者のStefan Kanthak氏(ZDNetNeowinSlashdot)。

攻撃者は、悪意のあるDLLをユーザーがアクセス可能な一時フォルダーにダウンロードさせ、そのあと特権を持たないユーザーでも名前が変更可能な「UXTheme.dll」などの正当なDLLに名前を変更することでDLLハイジャックを行う。インストーラが関連ファイルを見つけようとすると最初にハイジャックされたDLLが見つかるため、問題のコードがインストールされるのだという。

Microsoftは9月にKanthak氏からこのセキュリティ上の欠陥を伝えられていたが、修正には大量のコードを書き直す必要があるという。このため、次のメジャーアップデートまでは対応しない方針のようだ

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2018年02月17日 8時08分 (#3362958)

    elevatedなプロセスが、一般ユーザが書き込めるフォルダに実行ファイルを書き出して実行しちゃうもんだから、
    そのタイミングで実行ファイルを置き換えればelevateされた権限で実行できるってやつだよね。

    Microsoftがすぐに修正しないのは、「UACはsecurity boundaryではない」(よって脆弱性ではない)っていういつもの立場からだろう。

    原因としては、高権限プロセス用の一時フォルダが、標準で存在しないのが問題なのかなあという気がする。

    #「UAC security boundary」でググったら「UAC is a security boudanry」っていうTwitterアカウントが見つかって笑った。

    • by Anonymous Coward

      DLLの読み込み方法をこれからはちょっと考えるべきだな
      仕組みを変えようってことではなく「プラグイン」としての
      DLLの在り方

      • by Suzuno (48093) on 2018年02月17日 13時57分 (#3363086) 日記

        根っこにあるのが、MS-DOSのPATH環境変数や、その周辺の仕様だから難しそう。

        .NET FrameworkのReflectionみたいに、ピンポイントでファイル名を指定してロードさせるような仕様ならいいけど、既存の(たとえばWin32API等の)DLLは「規定の順序で探して、最初に見つかったファイル」という形式だし・・・。

        親コメント
        • by Anonymous Coward

          指定した署名付きの物以外はロードできないようにするオプションをつけるのが手っ取り早い。

        • by Anonymous Coward

          その認識はちょっと古い。
          OSとしては、SetDllDirectoryなどによって、DLLをロードするディレクトリというのは制御可能になっているし現状では、特に問題はない。
          これは単純にSkypeというアプリの問題に過ぎない・・・というといい過ぎかな。
          しかし、SkypeはもともとMS製じゃないアプリだから、根幹の部分で修正しきれない難しい問題があるのだろう。

          • by Suzuno (48093) on 2018年02月18日 11時34分 (#3363353) 日記

            SetDllDirectoryにせよ、System.Reflection.Assembly.LoadFromにせよ、今後作るアプリへの対策としては十分で、OSの制御としては特に問題ないと思いますよ。

            ただ、既にあるレガシーなアプリが、上記の仕組みを組み込めるかは別問題だよねって。
            理論的にはSetDLLDirectoryは比較的低コストで従来のWin32アプリに組み込めるとは思うけど、それでも動作検証のコストは莫大になりそうだし。
            そしてMS-DOSからの使用を引きずるかぎり、そういったレガシーなアプリのDLL読み込みに「OS側が干渉して不正なDLLから保護する」方式はとれないから、後方互換を維持する限りは延々と続く問題じゃないの?これ。

            # 本気でやるならSetDllDirectoryを使う前にDLLをロードしようとしたアプリを停止させるぐらいは必要だけど
            # それで古いアプリはこぞって動かなくなるので、それでいいの?って話だと思うの。

            親コメント
            • by Anonymous Coward

              SetDllDirectory()で対策出来るのは実行時リンクするDLLだけでエントリポイントに達する前にロード時リンクされるDLLに対しては全く対策にならない

    • by Anonymous Coward

      やっぱりマイクロソフトは標準ユーザーで使わせることをあきらめたのか。標準ユーザーの場合、管理者権限を持つプロセスは別アカウントで動作して一時フォルダーのパスも独立しているし標準ユーザーからはアクセスできないから問題ないんだがな

      • by Anonymous Coward

        「elevated」の意味分かってるのかい?
        標準ユーザーのみで管理を完結させたいと言いたいのならそれは標準ユーザーが管理者ユーザーである事と何の違いもない。

  • by Anonymous Coward on 2018年02月17日 11時05分 (#3363019)

    そもそもバックドアがあるものに脆弱性が見つかっても気にならない。skype使う奴なんてアホか気にしない奴だけだろ

  • by Anonymous Coward on 2018年02月17日 11時10分 (#3363020)

    次のメジャーアップデートで再度UWP化して根本的に対策するつもりなのかな。たとえDesktop Bridgeでもアップデートがストアのインフラ任せになるから攻撃を回避できる。

  • それすら難しいというなら、だったらインストール時に各ファイルのハッシュのリストを取りに行って確認すりゃいいのに。
    そんなに根本的なロジックを書き直さなきゃいけない話なのか?

    • by Anonymous Coward

      ハイジャック側がそういう確認作業をスキップしたりスルーできるから、ハイジャックされた時点でアウト。

      • by Anonymous Coward

        これは一般ユーザーが書き込めるファイルをインストーラーが勝手にアプリケーションに組み込んでしまうことから起こるバグだから、ハイジャックされる前に一般ユーザーが書き込めないファイルに公開鍵やハッシュリストをダウンロード出来るIPアドレスを書き込んでおけば、攻撃者がローカルでDLLをなんぼ書き換えようと検知して弾けるでしょ。

        • by Anonymous Coward

          DLLのロードタイミングは早いからね。検知する処理に必要なDLLをロードする途中でハイジャックされるのよ。

          • by Anonymous Coward

            検知用の機能を実行ファイルに組み込んどけば済む話。

            • by Anonymous Coward

              それは誰がやるんだ?

    • by Anonymous Coward

      何か勘違いしてない?
      UXTheme.dllは本来はシステムのライブラリで、その名前に変えてインストーラーと同じディレクトリに置いておくと勝手にそれが読み込まれるんだよ。
      システムのライブラリのハッシュ持つとかアホな事言ってるわけじゃないよね?

  • by Anonymous Coward on 2018年02月17日 11時27分 (#3363028)

    要はローカルユーザーが書き込める場所にダウンロードして実行するのが原因であり、
    updater自体は昇格されてるから、ローカルユーザーが書き込めない場所へ。例えば行儀は悪いけどインストール先=program filesにダウンロードしてやればいい。
    修正に必要な処理は、保存する場所がローカルユーザーが書き込めないことのチェック程度かな。

    • by Anonymous Coward

      OS側でAPIを用意してインストール時に一時的に保存する必要のあるファイルを安全に保持できるようにすりゃいいんでは。

      • by Anonymous Coward

        そんなんじゃ対応まで何年かかるかわからんw

    • by Anonymous Coward

      ローカルユーザーじゃなくて、権限のないユーザー(一般ユーザーなど)ですね。
      それに問題は、一般ユーザーが書き込める場所に展開することではなく、
      ファイルのパーミッションが、一般ユーザーでも書き換えられるようになっていること。

      • by Anonymous Coward

        違います。典型的なDLLハイジャックで、ダウンロードしたファイルを書き換えるのではありません。#3363021 も同じ勘違いしてるのかな?

  • by Anonymous Coward on 2018年02月17日 13時32分 (#3363068)

    ストアアプリ版とデスクトップ版どっちが対象なの?

typodupeerror

コンピュータは旧約聖書の神に似ている、規則は多く、慈悲は無い -- Joseph Campbell

読み込み中...