アカウント名:
パスワード:
ファイルの主ストリームだけでなく副ストリームなども検査する必要がある
アプリケーションがファイルを触る前に検査を行うので、
OSにセキュリティホールがあれば、ファイルの中身に触れる前に、ヤられます。
この指摘は非常に良いポイントをついているが、一言で言ってしまえば「それに対応しているウィルスチェッカーは無い」が答だ。 殆どのウィルスチェッカーエンジンは「アプリケーションがファイルに対して 'NT Create andX' コールを Generic Read か Generic Write つきで掛けたとき」に動作がスタートする。 しかし、このコールをかける前に GetAttribute をさんざん仕掛ける。さらにアクセス権限を確認するために NT Create andX を「Read Attribute」モードでファイルに対してかけるものも多い。
副ストリームを列挙するのは、アプリケーションがアクセスしようとしているストリームに加えて、それ以外についても、チェックするためでしょう。
副ストリームを列挙するのはいいが、主ストリームへのチェックがおざなりになったら意味が無いじゃないか。
それはアプリケーションの振る舞いを変更することになるので潜在的な危険をはらんでいます。
はい? アプリケーションの振る舞いは変更される事はありません。どのみちウィルススキャンはデバイスドライバーでフックを掛けた上で実施されるので
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
長期的な見通しやビジョンはあえて持たないようにしてる -- Linus Torvalds
ちゃんとウィルスを検出するAVソフトが良いAVソフト (スコア:5, 興味深い)
.
HSM(階層的ストレージ管理)というものがあります。(英語のWikipedia には説明がありましたが日本語版がまだないようです)
http://en.wikipedia.org/wiki/Hierarchical_storage_management [wikipedia.org]
http://ja.wikipedia.org/wiki/%E8%A8%98%E6%86%B6%E8%A3%85%E7%BD%AE#.E3.... [wikipedia.org]
どうもこの手の技術が利用する「ショートカット」とか「シンボリックリンク」的なものに対応していないAVソフトがあるようで、難儀した事があります。どれとは言いませんし、いまだにそうなのかもよく判りませんが。
なので、私は次のような選択基準を使っています。
1) まず、フリー版が無いものは却下。よほどの場合にのみ、1年分だけ捨てるつもりで、買う。
2) CIFS共有フォルダーを造り、そこに対してファイルを読み書きして、そのときの tcpdump を取得する。
同時にAVソフトをインストールした環境下で procmon.exe http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx [microsoft.com] を使って、どのようなアクセスリクエストが出ているのかを見る。
で、記録されているIOと tcpdump の結果を比較して、AVソフトのIOを割り出す。
3) アプリケーションが行おうとしているIOとあまりにも違う条件でファイルをIOしようとしているAVソフトは却下
具体的には、アプリケーションが立てていないのに、AVソフトは backup intent bit を立ててファイルを開こうとしている、などというものは全部却下します。
.
例として backup intent bit をさらに説明すると。
backup intent ビットは、ショートカットのようなファイルを「as is」で読んでしまいます。ショートカットが指し示している先にあるファイルを調べません。このビットが立ってないと、ショートカットを手繰ってくれます。アプリケーションはショートカットが指し示した先のファイルに用があるわけですから、ショートカットをウィルスチェックしてOK/NGを判定されても、ウィルスチェックした事にならない。
それでも「ショートカットをたぐるのがアプリケーション自身」ならば、結局本当のファイル実体を持ってくる作業もアプリケーションの仕事になるので、最後にはチェックできるのですが…HSMの多くは バックアップ時には ショートカットはショートカットのままで利用し、バックアップじゃないときだけ、二次ストレージ上にあるファイルイメージを持ってきます。
すると、AVソフトはショートカットを、アプリケーションは二次ストレージ上のイメージを見てしまうことになるので、ウィルスが「二次ストレージ上に退避されたファイル」に存在したりすると、全然チェックにならない…。
.
WindowsのAPIには、この手の「unix 系ファイルシステムにはなかった拡張機能」が豊富です。その分、「目的に応じたファイルIO」のバリエーションも増えています。と言うことは、同じファイルを見ているはずなのに、違う内容に見えるIOのバリエーションが増えている、と言うことで…そのことを深く考えずに「えいやぁ」で済ませているAVソフトは、おっかなくてとても使う気になれません。
他にどれだけ「いい加減なデザイン」が潜んでいるのか判ったものではありませんから。
Re:ちゃんとウィルスを検出するAVソフトが良いAVソフト (スコア:1)
何のためにAC発言なんだよ~。どんどんバラしちゃっていいんだよ、そういう情報は。
#他の部分は興味深いモデに同意。
Re:ちゃんとウィルスを検出するAVソフトが良いAVソフト (スコア:1)
ちゃんと検証方法が書かれているではないか。どうだろう、ココは一発 Gigazine あたりに特集を組んでもらうというのは(と、呼びかけてみるテスト)。
.
多分、Windowsマシンを2台用意して、一方をCIFS server, もう一方を CIFS client として設定し、CIFS client 側にウィルス対策ソフトを入れる。で、CIFS server 上に 何か適当な MS Office ファイル… xls とか…を置いておく。
CIFS server と CIFS client 上で wireshark を動かして、process monitor を動かして。
その問題の xls ファイルを CIFS client 上で開く。
んでセルを1つぐらい変更して、セーブ、Excel を終了する。
で、process monitor の出力(2つ)と wireshark の出力(2つ) を保存する…
ってのを各ウィルス対策ソフトごとにやればいいんじゃないか、と思う。
.
後は、それらの結果から、どのIOがウィルス対策ソフトの動作なのかを割り出す(ドライバーとして入っていると、見えない可能性が高いから)。
で、最後に人間がそれぞれの動作に関して、妥当性を評価する。
# HSMアプリをサーバ上にインストールしたケースも実験した方がいいのではないか、と言う気がする。
# この情報が本当に欲しいのは、個人ではなく「一度に何万ライセンスも買わなくてはいけない企業」だろうしな。
.
多分、本当にやると Gigazine はウィルスソフトメーカー群からのスポンサーがなくなる危険性があるが。
fjの教祖様
Re: (スコア:0)
半角/全角の空白ではダメみたいだし。
Re: (スコア:0)
いや、事実上ID発言だろこれ。
Re: (スコア:0)
コメントをスキャンしたところ、
Slashdot.okky
が検出されました。
# というところですね。
# これは分かりやすい・・・・
Re: (スコア:0)
スラドはAC叩きつつ上っ面のひねったやりとりする文化なんだから郷に従いましょう
Re:ちゃんとウィルスを検出するAVソフトが良いAVソフト (スコア:1, 参考になる)
・ショートカットを踏む前に、有害なものが含まれていないか検査する必要がある。
・ファイルの主ストリームだけでなく副ストリームなども検査する必要がある。(副ストリームの列挙のAPIがないOSでは、バックアップのAPIで代用する。)
・アプリケーションがファイルを触る前に検査を行うので、検査の段階で最終アクセス日時が更新されるべきではない。(バックアップなら更新されない。)
Re:ちゃんとウィルスを検出するAVソフトが良いAVソフト (スコア:1)
1) shortcut や stub などの中身を調べるために backup から始めるのは妥当かもしれないが、そこで終わったら意味が無い。結局アプリケーションが開こうとしているのと同じアクセス属性でファイルを開かなくては、本当は何が読めるのかなど判らない。
2) shortcut や stub を「追跡」する機能は、まさにそれを追跡するマシン上で、結局 stub データを読んでいる。と言うことは、アンチウィルスソフトは「追跡機能」にフックを入れるべきであって、アプリケーションそのものはバックアップモードで開く必要など無い。
3) これはその通り。ただし、「バックアップ」モードが「副ストリーム」を提示してくれるとは限らない。と言うよりも、ココで書かれているHSMの例などは典型的な バックアップモードだとファイルキャッシュなどの副ストリームが見えなくなる例 だ。副ストリームを読みたいからバックアップモード、と言うのは無思慮にも程がある。
そもそもウィルス感染は「主ストリーム」か「副ストリーム」かよりも「今読み込むストリーム」によって起こるものだ。であるならば、「アプリケーションがファイルを開く前にウィルスをチェックする」のではなく「アプリケーションが読み込もうとしているストリームを検査して、ウィルスの有無を調べる」必要がある。そう考えると というこのデザインが根本的に腐っている、と言うことがわかる。
「さっき読んだときのビットストリーム」と「今読めるビットストリーム」が『自機は何もしていないのに』異なる、という状態はネットワーク・ファイルシステム(SunNFSという意味だけじゃなく)一般に言えること。
そうかんがえると、「バックアップ扱いで読む」のは妥当どころか、出来の悪いデザインの証明以外の何者でも無い。
fjの教祖様
Re: (スコア:0)
ウィルス等が狙ってくる隙は、そこだけではありません。
OSにセキュリティホールがあれば、ファイルの中身に触れる前に、ヤられます。
また、アプリが読み込んだ部分だけをもとに検査するとなると、かなりのメモリとCPUを食います。
しかも、ファイルをメモリにマップされることもあるので、VMにまでフックの手を広げる必要が。
Re: (スコア:0)
この指摘は非常に良いポイントをついているが、一言で言ってしまえば「それに対応しているウィルスチェッカーは無い」が答だ。
殆どのウィルスチェッカーエンジンは「アプリケーションがファイルに対して 'NT Create andX' コールを Generic Read か Generic Write つきで掛けたとき」に動作がスタートする。
しかし、このコールをかける前に GetAttribute をさんざん仕掛ける。さらにアクセス権限を確認するために NT Create andX を「Read Attribute」モードでファイルに対してかけるものも多い。
Re: (スコア:0)
それは、話の繋がりが見えないですが、とりあえず、おいといて。
> アプリケーションと異なるストリームをチェックするだけでよいとして
> アプリケーションが読み込むはずのストリームをチェックしないのはナンセンスだろう。
勝手に誤解して、その誤解に対して反論していますよ。
副ストリームを列挙するのは、アプリケーションがアクセスしようとしているストリームに加えて、それ以外についても、チェックするためでしょう。
> 常識的に考えるならば、アプリケーションが作り上げたファイルハンドルを横取りして、ファイルIOを行い、ウィルスをチェックする、と言う動作が正しい。
それはアプリケーションの振る舞いを変更することになるので潜在的な危険をはらんでいます。
一言で言うならば、「行儀が悪い」です。
Re: (スコア:0)
副ストリームを列挙するのはいいが、主ストリームへのチェックがおざなりになったら意味が無いじゃないか。
はい? アプリケーションの振る舞いは変更される事はありません。
どのみちウィルススキャンはデバイスドライバーでフックを掛けた上で実施されるので
Re: (スコア:0)
Re:ちゃんとウィルスを検出するAVソフトが良いAVソフト (スコア:1, おもしろおかしい)
AVソフト言うな (スコア:0)