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

WindowsアプリのインストーラのDLL読込み脆弱性、Microsoftは自社製品を修正せず」記事へのコメント

  • by Anonymous Coward

    どうみても仕様。こういうのをどや顔で脆弱性報告しちゃうのはどうかと思うし、受け付けちゃうのもびっくりする。日本のITスキルの水準がわかる事例。

    • Re:イミフ (スコア:2, すばらしい洞察)

      by Anonymous Coward on 2018年05月22日 12時32分 (#3412527)

      大昔のUnixにあったPATHに.を入れる慣習と同じくらい頭の悪い仕様に見えるんだが、気のせいかなあ。

      そしてそのUnixでもさすがにLD_LIBRARY_PATHに.を入れるなんて暴挙は寡聞にして知らない。

      親コメント
      • by manmos (29892) on 2018年05月22日 14時01分 (#3412575) 日記

        > そしてそのUnixでもさすがにLD_LIBRARY_PATHに.を入れるなんて暴挙は寡聞にして知らない。
        shared libraryを自作しているときだけだな。

        親コメント
      • by Anonymous Coward

        DLL Hell時代にシステムパスにあるDLLは互換性が不明だから必要なDLLは全部exeの隣に配置しておけば安心だねって文化がありまして。

        • by Anonymous Coward
          WindowsにDLLを静的リンクする仕組みがないのは何でなんだろね
          UNIX系OSにはずっと昔からあるのに
          カレントディレクトリから動的ロードしてしまう問題の直接の解決ではないけど
          • by Anonymous Coward

            Unix系にはずっとあるというか Unix というのか Linuxでの so って、かなり後になってから出来たもんだからね。利用方法は他のOSの失敗見て整理されてるところはある。

            Winodws に関しては、最も初期から DLL が OS のAPIを提供するインターフェースなので完全にDLLを使わないというのは無理だけど、MFCだとか開発言語のランタイムは普通に静的リンクできる。
            .NET になってからは、厳密な署名でマイナーバージョンまで完全に一致しないとリンクしないとか、マイナーバージョンの違いは許すとか、互換あるかわからんけど、とりあえずリンクして動かしてみるけど、動くかはわからんってのが選べるようになってる。
            逆に静的なリンクは(公式には)なくなってる。

      • by Anonymous Coward

        いや、今回の話はカレントディレクトリじゃないっすよ。exeと同一ディレクトリのほう。
        (カレントディレクトリはだいぶ前に優先順位が下げられてます)
        Windowsは大抵、実行ファイルを(PATHの通っていない)任意の場所に置くので、DLLを実行ファイルと同一ディレクトリから読めないと、アプリ固有のDLLが使えなくなります。
        (*nixなんかでも、「同一ディレクトリ中の別スクリプトを呼ぶの禁止」とかになったら困るよね?)

        これについてはmacOSも同様なんだろうけど、あっちはそもそもapp形式の実体がディレクトリな上、バイナリ配布は大抵dmg(ディスクイメージ)で行うので、「同一ディレクトリ内に攻撃者のDLLが置かれる」という状況自体が発生しないのかも。

        • by Anonymous Coward

          >(*nixなんかでも、「同一ディレクトリ中の別スクリプトを呼ぶの禁止」とかになったら困るよね?)

          驚くべきことに、伝統的なUnixでは実行プロセス側から自分の実行ファイルがどのディレクトリにあるのか調べるAPIはそもそも存在しない。execve()で絶対パスを指定する形で起動されていたら自分の引数を見れば解決するのだが、そうでなければ$PATHを探すとかgetcwd()の結果を見るとかいった不確実な方法しかない。

          実行ファイルの場所が調べられないってのはクソだと思う(実際、Linuxでは /proc の下を覗くと情報が取れるようになっている)けど、結果として「実行ファイルと同一ディレクトリの別スクリプトを呼ぶの禁止」なんて縛りは伝統的なUnixでは存在しえない、ということになる。

          • by Anonymous Coward
            >実行ファイルの場所が調べられないってのはクソ
            でも動いてるバイナリをmvで移動してもプロセスはそのまま動作し続ける(それどころかrmで消してもよい)のがUnixのセマンティクスだから実行ファイルの場所なんか知ってもしゃーないという気が

ソースを見ろ -- ある4桁UID

処理中...