Safariにスクリプト自動実行の脆弱性 28
ストーリー by Acanthopanax
チェックを外す 部門より
チェックを外す 部門より
heise onlineが、Safariにスクリプト自動実行の脆弱性が発見されたことを伝えている。同記事最終段落にデモへのリンクがあり、また発見者のMichael Lehn氏もデモを用意している。実行可能となるのは、"#!/bin/bash"のような行が先頭にないシェルスクリプトで、"jpg"や"mov"のような拡張子がつけられ、/Applications/Utilities/Terminal.appで開くようにメタデータがつけられたファイル。これをZIPアーカイブにしたものを、「ダウンロード後、“安全な”ファイルを開く」にチェックが入っている状態(デフォルト設定)のSafariでダウンロードすると、その中のスクリプトを確認なしに実行してしまう。
現状での対策は、「ダウンロード後、“安全な”ファイルを開く」のチェックをはずすか、Terminal.app(ターミナル)を/Applications/Utilitis (アプリケーション/ユーティリティ)以外の場所に移動することとされている。
それは安全なファイル・・・なの? (スコア:4, 興味深い)
今回はMacのリソースヘッダが仇になるという感じなんですが
このバグの原因は拡張子とMIMEとリソースヘッダと実際の中身の何でファイルの種類を決定するかという
アプリケーション内でのポリシー不一致がもたらしてる気がします。
やっぱ大規模だと意思疎通や自動機能って厄介なのね・・・
ところで、これって起動できるのはインストール先が解っているなら何でも多分起動できるんですよね?
Terminal.appを移動しても、 /usr/bin/bash とかに書き換えられたらどうなるんでしょう?
チェック外す方の回避策じゃないと漏れがありそうなんですが・・・
# Winメインだけど、MacOS X使いが周囲に多いので一応警鐘しておこっと。
(おふとぴ)Re:それは安全なファイル・・・なの? (スコア:2, おもしろおかしい)
それは昔々、MacOS 8.6を使っていた頃ですが、
友人(Win使い)にフロッピーで渡したファイルが
「○○○.jpg.gif.bmp.pict.inf.tiff.exe」
という名前でした。中身はただのtext。
流石に『何だこれは!! アプリ動かんぞ!!』と
激怒されましたが。
#Jeditで作ったのでリソースフォークさえ外れなければ
#Macでちゃんとtextの中身が読めます。
今はOS Xですが、もうこんな冗談も通じなくなるかなぁ。
-----
スケーター12号〜(┌ ┌ ┌ ´Д`)┘
Re:それは安全なファイル・・・なの? (スコア:0)
警鐘 [goo.ne.jp]は鳴らすものです。動名詞ではありません。
Re:それは安全なファイル・・・なの? (スコア:0)
# それだけなのでAC・・・
Mac OS Xのセキュリティホール (スコア:3, 参考になる)
Re:Mac OS Xのセキュリティホール (スコア:1)
しかし、じゃあどうしろというのだという気もする…
--
Linux のデスクトップ環境とかではどうなんだろうな?
切り分け (スコア:4, 参考になる)
そのIT Proの記事 [nikkeibp.co.jp]は問題の切り分けが何だか曖昧なような。私見では、今回の脆弱性には(Mail.appの含め)問題が3つ。
Safariでは、「ダウンロード後、“安全な”ファイルを開く」場合でも、アプリケージョンやシェルスクリプトがファイルに含まれていれば本来なら警告を出す。しかし今回、これを回避してシェルスクリプトを実行させる方法が見つかった。
Mail.appでも、メールから添付ファイルを直接開くときには、その添付ファイルがアプリケーションやシェルスクリプトであれば警告を出す。しかし今回、これを回避してシェルスクリプトを実行させる方法が見つかった。また、実体がシェルスクリプトでもJPEGファイルなどに見せかけることができる。
ターミナルで開くように設定されている「ターミナル書類」でも、.jpgや.movという拡張子を付けることで、JPEGファイルやMOVファイルに見せかけることができる。
上の2つは、基本的にはアプリケーションレベルの話のような気がするのですが。
[参考] アップルTIL: インターネットからダウンロードしたメール添付書類やコンテンツを安全に利用するヒント [apple.co.jp]。今回、末尾で述べられているセキュリティ機構を回避されてしまうことが分かったわけですが。
Re:切り分け (スコア:3, 興味深い)
PC WEBの記事 [mycom.co.jp]でも、「ZIPファイルに含まれる偽装メタデータ」とかあるのですが、このメタデータはFinderの「情報を見る」→「このアプリケーションで開く」で設定できるわけです。で、「ターミナル」で開くように指定するとファイルの種類も「ターミナル書類」となります。「ターミナル」で開くように明示的に指定された「ターミナル書類」が開かれたときに、「ターミナル」で実行されるのはまあ当然ですし、このメタデータはメタデータとして正常なので、ZIPやsitのアーカイブでも保存されるのもまあ異常ではないでしょう(sitでも確認しました)。
ということで、やっぱり問題は、実際には安全ではない(かもしれない)ファイルを確認なしに開いてしまうアプリケーション(「ターミナル」も含めていいかも)の問題や、ファイルの種類で「ターミナル書類」と認識されているにもかかわらず、拡張子を優先してJPEGなどのアイコンで表示してしまうということではないかと思うわけです。
Re:切り分け (スコア:2, 興味深い)
# そして Terminal.app 以外のターミナルアプリケーションでも、Terminal.app で開くのと同じことができたりして
アイコンに関しては何でも貼りつけられるので、あまり関係ない気がします。でも、アイコンを信用するなという話にはなるかもしれません。
・古い Mac OS では拡張子に(あまり?)依存していなかったし、それは現在も引き継がれている。
・Mac OS X で、拡張子によるファイル識別を導入した。
このへんの関係がこなれていなかったのかなぁと思いました。
--
スクリプトだけじゃなくてコンパイルしたバイナリも開けられるみたいだ
Re:切り分け (スコア:1)
# Finder で自分で開く人までは面倒見なくていいと思うけど。
Safariの脆弱性というよりも (スコア:2, 参考になる)
たとえ「ダウンロード後、“安全な”ファイルを開く」のチェックを外しても、はたまたFirefoxでダウンロードしたとしても、動画ファイル等のように見えるファイルをダブルクリックしてしまえばスクリプトは実行されてしまうわけで…。
とりあえず頻繁にターミナルを使う事が無いようであれば、ターミナルをアクセス不可にしておいたほうが安全かも。
Re:Safariの脆弱性というよりも (スコア:1)
普通のファイルに偽装したマルウェアというのは昔からありましたし、最近もありましたし、出どころの怪しげなファイルを開かないというのも必要でしょう。ただ、自動実行さえされなければ、中身を調べたりもできるわけで。
Re:Safariの脆弱性というよりも (スコア:0)
それじゃぁただのマックじゃないか!
Re:Safariの脆弱性というよりも (スコア:1, すばらしい洞察)
Re:Safariの脆弱性というよりも (スコア:0)
シェルスクリプトはTerminalがなくても実行出来る訳だし。
どうやら、zipファイルをFinderで解凍した場合に自動実行されてしまう
というバグが原因のようです。
Re:Safariの脆弱性というよりも (スコア:1)
ダウンロードしておいたZIPアーカイブをFinder上で展開しても、別に自動実行はされませんので、中のファイルを開くのはSafariの「親切」出はないかと思います。
Re:Safariの脆弱性というよりも (スコア:0)
問題は、偽装されたシェルスクリプトがTerminalで実行されてしまう、という事。
それとも、Terminal無しで偽装されたシェルスクリプトが実行できるのかな?
VersionTracker に (スコア:2, 参考になる)
自宅に戻らないと試せないので、紹介のみ。
Re:VersionTracker に (スコア:1)
たしか前にも… (スコア:1)
--
いちいちアプリケーション起動するのが邪魔で外しっぱなしの ID
Re:たしか前にも… (スコア:4, 参考になる)
Mac OS X 10.4のときに、Dashboardウィジェットが知らないうちにインストールされる可能性 [srad.jp]というのがありました。
Re:たしか前にも… (スコア:2, 参考になる)
ちなみに、もっと前(まだSafariのなかったころ)には、Auto file execution vulnerability in Mac OS [mac.com]というのがありました。
Re:現状の回避策その2 (スコア:0)
>
>Macを使うのをやめる。
確かに、使うのをやめれば安全になりそうですね。
Linuxとかに乗り換えるのもアリかも。
Re:現状の回避策その2 (スコア:0)
Re:現状の回避策その2 (スコア:1)
これは「おもしろおかしい」狙いなのかな?? いや、Windows 3.1 を使うって話なのかも:-)
直し方 (スコア:0)
ファイルを開くタイプのアプリケーション(殆どすべてか)は、
Launch Servicesがファイルとアプリケーションをバインドする条件 [apple.com]
の通りにファイルの安全性を判断し、またユーザに示すべきです。
表示と挙動に矛盾があってはいけません。
Safariであれば、「安全なファイルを開く」判断を上記リンクの優先順に
基づいて行う。
Mailであれば、優先順に従い、Terminal.appの書類であることをユーザに
明示する(書類のアイコンを置き換えるか、それよりも目立つ方法で)
Finderも、ファイルの関連付けを確認するのに「情報を見る」ウインドウを
表示する必要があるのは、不親切と言えるでしょう。
また、今からでも遅くないので、Appleはこのような判断を行うリファレンス・
コードか、標準的なAPIを提供するべきです。
ファイルの関連付け判断がここまで複雑化したのは、Mac OS Xがその道を
選んだからに他なりません。
TidBITS の記事 (スコア:1)
ここでは、 Apple に対して「どんなファイルでも、ただ開くだけでコードとして実行されるものには、それと分かるように、目立つ『バッジ』をつけるべきだ。」という提案がされています。
>ファイルの関連付け判断がここまで複雑化したのは、Mac OS Xがその道を選んだからに他なりません。
ほんとにそうですね。ファイルの関連付けは Mac OS 9 方式の方がよかったかも。あれもデスクトップデータベースが壊れると困るという問題はあったわけですが。