セキュリティソフトウェアに任意ファイルを削除させることが可能な脆弱性 26
こわっ 部門より
マルウェア検出・削除の仕組みを悪用して非特権ユーザーが任意ファイルを削除可能な脆弱性が複数のセキュリティソフトウェアで見つかり、報告を受けた各社が修正を行ったそうだ (SafeBreachのブログ記事、 Neowin の記事、 Dark Reading の記事、 Black Hat Europe 2022 の告知記事)。
この脆弱性は検出したマルウェアがロックされていて削除されない場合、Windows の再起動後に削除を実行する処理に存在する。攻撃者は一時ディレクトリ内に削除するターゲットファイルと同じ名前のマルウェアファイルを作成し、そのままハンドルを閉じずに待機する。セキュリティソフトウェアがマルウェアを検出し、再起動後の削除を予約したら一時ディレクトリを削除し、同じパスでターゲットファイルが格納されているディレクトリを示すようにディレクトリジャンクションを作成する。あとは Windows が再起動されるとターゲットファイルが削除されるという仕組みだ。
発見した SafeBreach は 11 本のセキュリティソフトウェアをテストし、Microsoft Defender・Microsoft Defender for Endpoint・SentinelOne EDR・TrendMicro Apex One・Avast Antivirus・AVG Antivirus の 6 本が影響を受けることを確認。Palo Alto XDR・Cylance・CrowdStrike・McAfee・BitDifender の 5 本は影響を受けなかったという。なお、Microsoft 製品の場合、ターゲットファイルだけでなくファイルが格納されているディレクトリごと削除されるとのこと。
この脆弱性を利用して SafeBreach が作成したワイパーツールは日本の合気道にちなんで「Aikido Wiper Tool」と呼ばれている。ファイル削除はセキュリティソフトウェアが実行するため検知されることはなく、非特権ユーザーとして実行してシステムを起動不可能にしたり、特権ユーザーにアクセスが制限されている重要なデータを消去したりといったことが可能だ。セキュリティソフトウェアが検疫したファイルを格納するフォルダーを削除することも可能だという。
報告を受けた Microsoft は CVE-2022-37971、TrendMicro は CVE-2022-45797、Avast と AVG は CVE-2022-4173 を割り当て、それぞれ脆弱性を修正している。SentinelOne からは連絡が来ていないとのことだ。
マイナーソフト (スコア:1)
Webrootって言うんですけど
これって (スコア:0)
実はジャンクション機能の仕様の脆弱性なんじゃないかなぁ。
Re: (スコア:0)
権限がないと消せないなら本質的にはジャンクション機能の問題ではなさげ。
特権を持ってるセキュリティソフトがこれを盲目的に使うから問題になる。
と記事から判断してたんだけど、そうじゃないのかなあ?
Re: (スコア:0)
致命傷になるという点ではジャンクション周りの取り扱いミスだけど、
任意のファイルを消させる的が出来るという点では、レースコンディション系バグでよくあるミス。
検知したあとに「すり替えておいたのさ!」が出来る間があるのが問題だからね。
検知から削除までをアトミックに実施できないなら、ブートプロセスの初期段階でロックされる前に再チェックして削除するしかない。
Re: (スコア:0)
TxFを再設計して載せるとか。。やんないだろうなぁ。
Re: (スコア:0)
と言うかWindowsの機能じゃなくて自前で削除すべきだね。
ハンドル閉じられるまで粘ったりハンドル強制的に閉じるのもありかな。
どうせ強制削除でファイル参照してるプロセスはエラー踏むし。
# ジャンクションとアンチウィルスと言えば、
# XP時代、ジャンクション先に置いてたハックツールにノートンがブチ切れて消そうとするも、
# ジャンクションをうまく扱えずに削除失敗ポップアップが無限ループしてたのを思い出す……
Re: (スコア:0)
UNIXなら典型的なsymlink attackでアプリは当然対策していなければならないけど、Windowsはsymlink機能が後付けなのでこうなる。Windowsでsymlinkに管理者権限とかデベロッパーモードとかが必要な理由なのだがsymlinkと類似の機能であるジャンクションはなぜか不要なんだよな。
Re: (スコア:0, 参考になる)
おまえ何か勘違いしてるな
この脆弱性の場合、UNIXにおけるsymlinkならば、何ら対策などいらない
なぜならsymlinkファイルに対して削除したところで、実体には影響なくsymlinkファイル自体が削除されるだけだからだ
必要なのはApacheのFollowSymlinkのように、symlinkファイルの指す先まで辿るか否かということの方
UNIXなら仮にhardlinkされていたとしても問題ない
削除したとしてもhardlinkカウンタがひとつ減るだけの話であり
カウンタがゼロになるまで、どこか別の場所にあるhardlinkされていたファイル自体は存在し続ける
この脆弱性で言及されているWindowsにおけるジャン
Re:これって (スコア:4, 参考になる)
この問題はどちらかというと、「Windowsが提供するファイル削除予約機能」の脆弱性じゃないかな。
ファイル移動のAPIである MoveFileEx(変更後ファイル名をnullにすれば削除もできる)は、
フラグ指定により、即座に実行せず再起動時に処理するようにできる。
「ロックされているファイルも操作できる」という便利機能であり、
Windowsで動くアプリがよくアップデート時に再起動を促される羽目になる元凶。
こいつが、名前ベースで予約してるから、
「予約してから再起動するまでの間に移動元に指定したファイルが変更されても、変更後のファイルが処理対象になる」
ことで、今回の問題がおきる。
ジャンクションを使うのが手軽なだけで、ジャンクションを使わなくても不正な処理を行わせるシナリオはありえると思う。
MoveFileExを呼び出した時点で、
再起動まで変更できないようにロックしてしまうとか、
再起動での処理実行時にMFT番号?とか?で、API呼び出しと同じかどうか検証するとか、
無関係なファイルを処理しないようにするのが、正しい挙動じゃないかな、と。
まあ、今更 Windows API の挙動を変更するわけにはいかないので、
MoveFileExを呼び出す側で慎重に取り扱う、という対応をするしかないでしょうけど。
Re: (スコア:0)
削除予約時と削除実行時で実際のファイルが異なることを想定して使っていることは
悪いことをする目的以外ではほとんどないんじゃないかと(個人的には)思うので、
別にMoveFileExの挙動を変えてしまってもいいんじゃないかなあ。
Re: (スコア:0)
そういう隙をつく攻撃も、TOCTOUという名前がついているほど典型的
Re: (スコア:0)
この問題はどちらかというと、「Windowsが提供するファイル削除予約機能」の脆弱性じゃないかな。
うーん消す機能も予約機能も脆弱性とはいえないのでその操作指示の問題じゃないかな
んでシステムファイルを消せる権限付与を全開放しているわけじゃないから脆弱性とはいえないかと
んでセキュリティソフトウェアに対する特権付与も脆弱性とはいえないかと
なので権限内で操作できるというだけですから
悪質な指示をセキュリティソフトウェアが出すならセキュリティソフトウェアの悪意だし
悪質な指示をセキュリティソフトウェアが受け付けて代理してしまうならセキュリティソフトウェアの脆弱性
ってことじゃないかなぁ
# まぁWindowsのジャンクションってユーザーの想定外でデータ消えちゃう仕様だからってのはなくもない
Re: (スコア:0)
adminじゃないとMOVEFILE_DELAY_UNTIL_REBOOTフラグは立てられないと思ったけど
Re: (スコア:0)
それほどの強権って何を指してるの?
Re: (スコア:0)
消させるのはリンク自体じゃなくリンク先ディレクトリに入ってるファイルだろ
例えばC:\mydir\explorer.exeというマルウェアを作成してロックし、再起動時削除が予約されたらmydirを削除して代わりにC:\Windowsを指すリンクを作成することでC:\Windows\explorer.exeを削除させられるって寸法
Re: (スコア:0)
> この脆弱性の場合、UNIXにおけるsymlinkならば、何ら対策などいらない
> なぜならsymlinkファイルに対して削除したところで、実体には影響なくsymlinkファイル自体が削除されるだけだからだ
おまえ何か勘違いしてるな
なんでシンボリックリンク貼る先がファイル前提なんだ?
間のディレクトリに貼れば実体ごと消えるだろ
例)
~/virus/hoge を用意して引っ掛けさせる。そんでAVが消す前に
ln -s /sbin ~/virus する。
AV が rm ~/virus/hoge したら /sbin/hoge も消える
symlinkなら大丈夫、な分けない
回避するには権限というのは正しいが、AVにどこまでの権限を与えるか(どこまでのファイルを削除・隔離するか)の要件に依存するだけ
てかclamavもclamonaccはrootで動かすだろ
頭おかしいと思うほうが頭おかしい
悠長に再起動まで待つんだ (スコア:0)
危ないファイルを使用中のプロセスなんて悪さをしているか乗っ取られているかしている可能性が高いんだから、強制終了して消してしまえばいいのでは
で、なんで (スコア:0)
合気道なの?
Re:で、なんで (スコア:1)
相手の力を利用してるからかな
Re: (スコア:0)
相手の力を利用してるからかな
合気道だと対面の敵対者を自爆させる誘導だけど今回のは第三者を利用してるからなんか違和感ありますね
報道機関に誤情報掴ませて機動隊による排除をさせる感じみたいな
まずは隔離じゃないの? (スコア:0)
マルウェア発見時って、見つかったよってアラート出した後、一旦隔離フォルダに入れられて、削除か誤検知か選ぶもんだと思ってた。
まぁ、ファイル作られてる時点で、もう侵入された後だから、ファイル削除程度で済むのはむしろ僥倖なのかも知れぬ。
Re: (スコア:0)
ファイル作られてる時点で、もう侵入された後だから、ファイル削除程度で済むのはむしろ僥倖なのかも知れぬ。
メールの添付ファイルも検閲対象だから侵入された後ってのはちょっと語弊がありますね
# 感染してもいないのに緊急アラートうざいみたいな状況あるよね
木を見て森を見ず (スコア:0)
> 攻撃者は一時ディレクトリ内に削除するターゲットファイルと同じ名前のマルウェアファイルを作成し、そのままハンドルを閉じずに待機する
これが可能な時点で既に詰んでいると思う
Re: (スコア:0)
そう?一般ユーザーが好きなファイル消せるから、学生が学校のPCを起動できない様にするとかの悪さから、侵入しての破壊工作まで色々できそうじゃない?
Re: (スコア:0)
ってことは対抗策のワクチンがあるってこと?ファイザー?モデルナ?