アカウント名:
パスワード:
アンチウィルスがSMBサーバからファイルをダウンロード。アンチウィルスがチェック後、ローダーに渡すという順序になっているものだとばかり思っていました。ローダーが改めてダウンロードし直すのはダウンロードを2回やってて無駄な動作じゃないでしょうか?
通常はファイルがオープンされた後、メモリにマップされて、実行時に随時ロードという形だと思うし、それに加えてカーネル/ユーザ領域とかもあると思うので、ウィルスチェックのフックは別途とした方が実装しやすいんじゃない?でも、キャッシュしないんだろうかってのはある。
フック云々のタイミングをdl後にすればいいだけなのでは?前半の内容は何の説明にもなってないような。
メモリマップだとオープンしたときには特に読み込みが起きず、該当メモリへのアクセスがあった際にデータがメモリ上に読まれて居なければデータを読み込み、メモリ管理の都合でページアウトしてたらページフォルトの際に再度読み込みが行われる。つまり、プログラムの実行中ずっと走りっぱなしで、通常は実行ファイルが実行中に変化しないにも関わらず読み込みのたびに再スキャンすることになる。
そしてここにフックを仕掛けるとローレベルのストレージアクセスないしはページフォルト管理システムに割り込む必要がある。前者の時点で結構コアな部分だし後者は完全にカーネルのコアな
dl後という実装になってても、悪意あるSMBサーバの方を、先に来るアクセスの方を騙したら済むだけでは?
そんなに難しい話ではなく、ウィルスチェックを付けたのが後付けだったから、ってだけな気がする。OSの仕様にも関わるようなややこしい所をがっつり大改造するより、ちょっとしたフックを使った簡単な実装で済ませようとした、とか。
このストーリーのような指摘も、MS内で設計レビューの時点で誰かがツッコミを入れて、そうそう攻撃に使われるもんでもないし、それを避けるために大改造をしなくてもいいだろう、みたいな議論が終わってた、とかじゃないかな。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
最初のバージョンは常に打ち捨てられる。
なんで2回アクセスするんだろ? (スコア:0)
アンチウィルスがSMBサーバからファイルをダウンロード。アンチウィルスがチェック後、ローダーに渡すという順序になっているものだとばかり思っていました。ローダーが改めてダウンロードし直すのはダウンロードを2回やってて無駄な動作じゃないでしょうか?
Re: (スコア:0)
通常はファイルがオープンされた後、メモリにマップされて、実行時に随時ロードという形だと思うし、それに加えてカーネル/ユーザ領域とかもあると思うので、ウィルスチェックのフックは別途とした方が実装しやすいんじゃない?
でも、キャッシュしないんだろうかってのはある。
Re:なんで2回アクセスするんだろ? (スコア:0)
フック云々のタイミングをdl後にすればいいだけなのでは?
前半の内容は何の説明にもなってないような。
Re: (スコア:0)
メモリマップだとオープンしたときには特に読み込みが起きず、
該当メモリへのアクセスがあった際にデータがメモリ上に読まれて居なければデータを読み込み、
メモリ管理の都合でページアウトしてたらページフォルトの際に再度読み込みが行われる。
つまり、プログラムの実行中ずっと走りっぱなしで、
通常は実行ファイルが実行中に変化しないにも関わらず読み込みのたびに再スキャンすることになる。
そしてここにフックを仕掛けるとローレベルのストレージアクセスないしはページフォルト管理システムに割り込む必要がある。
前者の時点で結構コアな部分だし後者は完全にカーネルのコアな
Re: (スコア:0)
dl後という実装になってても、悪意あるSMBサーバの方を、先に来るアクセスの方を騙したら済むだけでは?
そんなに難しい話ではなく、ウィルスチェックを付けたのが後付けだったから、ってだけな気がする。
OSの仕様にも関わるようなややこしい所をがっつり大改造するより、ちょっとしたフックを使った簡単な実装で済ませようとした、とか。
このストーリーのような指摘も、MS内で設計レビューの時点で誰かがツッコミを入れて、そうそう攻撃に使われるもんでもないし、
それを避けるために大改造をしなくてもいいだろう、みたいな議論が終わってた、とかじゃないかな。