中間者攻撃の脆弱性が発見されたMacのアプリケーションアップデート用フレームワーク「Sparkle」を利用したアプリが予想以上の数に上り、脆弱性を含んだアプリを特定するスクリプトなどが公開されています。詳細は以下から。
先月末、Macのアプリケーションアップデート用フレームワーク「Sparkle」に中間者攻撃が可能な脆弱性が発見され、SparkleをHTTPS以外を利用しているアプリで任意のJavaScriptコードなどが実行されるPoCが公開されたとお伝えしましたが、このSparkleの脆弱性がかなりの数のアプリに影響を与えているようです。
Sparkleは現在SketchやBetterTouchTool, Slack, VLC, WebKitなどユーザー数の多いアプリにも採用されており、これらのアプリは先月末から緊急のアップデートを配布し対応に追われていますが、それ以外にも数多くのアプリが存在するとArs Technicaが報じています。
The precise number of apps affected isn’t known because it’s not easy to detect all the conditions necessary for them to be vulnerable. Radek estimated the number to be “huge” and said he has confirmed that the list includes Camtasia 2 v2.10.4, DuetDisplay v1.5.2.4, uTorrent v1.8.7, and Sketch v3.5.1. Computer forensics expert Jonathan Zdziarski told Ars that the Hopper reverse engineering tool and DXO Optics Pro are also susceptible. A longer list of apps that rely on Sparkle is here,
“Huge” number of Mac apps vulnerable to hijacking, and a fix is elusive | Ars Technica
脆弱性を含んだアプリの確認方法
Sparkleを利用したアプリはIssue #717にも公開されていますが、ユーザーがアプリケーションフォルダにインストールしている中のもので、Sparkleフレームワークを利用しているアプリは以下のスクリプトを実行することで確認でき、
find /Applications -path '*Autoupdate.app/Contents/Info.plist' -exec echo {} \; -exec grep -A1 CFBundleShortVersionString '{}' \; | grep -v CFBundleShortVersionString
Sparkleのバージョンは”grep -v CFBundleShortVersionString”で抽出されるので、この値が1.13.0以下なら中間者攻撃の恐れがあるため、アップデートが出ているかをアプリの開発元や公式サイトでチェックしてください。
おまけ
この脆弱性は初めからHTTPSを利用しアップデートを配布しているAdiumなどは影響を受けず、Vallieresさんが公開しているスクリプトの方がより見やすく出力されます。
A longer list of apps that rely on Sparkle is here, but readers are cautioned that not all of them communicate over insecure HTTP channels or use a vulnerable version of the update framework. Margaritelli said the most recent version of the Adium instant messenger uses HTTPS for updates and isn’t vulnerable.
“Huge” number of Mac apps vulnerable to hijacking, and a fix is elusive | Ars Technica
find /Applications -name Sparkle.framework | sed 's,/Applications/\(.*\)\.app/Resources/Info.*,\1,'|while read fname; do appname=$(echo $fname | sed -e 's/\/Contents\/Frameworks\/Sparkle\.framework//g' | sed -e 's/\/Applications\///g') version="$(defaults read "$fname/Resources/Info" CFBundleShortVersionString)" echo "$appname => $version" done
関連リンク
コメント
AppCleanerとUninstallPKGが引っかかった
自分の環境では、下記3個の有名なアプリで利用していることが判明。
それぞれのアプリの最新版バージョン/Sparkleのバージョンで表記。
対策済み
・VLC(2.2.2/1.6)
未対策
・AppCleaner(3.2.1/1.10.0)
・Evernote(6.5 Beta2(453102)/1.12.0)
>>2
VLCは未対策だぞ。1.6は1.06.0で1.60.0じゃない
全部1.13.0以下だった!以下Sparkleのバージョンね。
・AppCleaner 1.11.0
・BetterZip 1.10.0
・coconutBattery 1.8.0
・iFunBox 1.8.0
・Karabiner 1.11.1
・MacID 1.11.1
・Malwarebytes Anti-Malware 1.11.0
・OpenEmu 1.7.1
・VLC 1.6
あ、ごめん。1つだけは起動してアップデートをチェックしたら対策済みバージョンになったわ。
・coconutBattery 1.8.0 >> 1.13.1
>>3
申し訳ない。
ttps://www.videolan.org/vlc/releases/2.2.2.html
VLCのリリースノートでSparkleに触れていたのもあって、何を勘違いしたか表示された数字をバージョン管理の数字ではなく普通に数学的に考えてしまってました。
Boxcryptorは今日アップデートあったけど、1.5のままだったという・・・