Home Assistantのffmpegに欠陥、攻撃者がSupervisorトークンを窃取しrootでコード実行可能に

Home AssistantのWyomingプロトコル統合に新たに公表されたクリティカルな引数インジェクション脆弱性により、攻撃者は任意のローカルファイルを読み取ることが可能でした。これにはSUPERVISOR_TOKENなどの機密性の高い環境変数も含まれ、最終的にホストシステム上でのroot権限でのコマンド実行につながっていました。

この脆弱性は、Jia Hao氏が完全な悪用チェーンではなく、影響度の高い攻撃連鎖の要素(プリミティブ)を探索する中で発見されました。同氏が2023年に実施したHome Assistantの認証前攻撃対象領域に関する監査が土台となっています。

脆弱性はHome AssistantのWyoming Assistサテライト統合のannounceサービス内に存在していました。攻撃者が制御可能なmedia_idパラメータが、十分なサニタイズを経ないままffmpegに-i コマンド引数として直接渡される仕組みになっていました。

Jia Hao氏によると、media_idフィールドはHome Assistantのローカルアドレスに対するSSRF攻撃を防ぐためスキームのブロックリストによるURL検証を受けていたものの、ffmpegの疑似プロトコルであるconcat:、file:、subfile:はこのブロックリストに含まれていませんでした。

この見落としにより、任意のffmpegプロトコル文字列がサブプロセスに到達できてしまい、/proc/self/environなどのファイルを読み取る経路が開かれていました。

悪用にあたっては大きな障壁がありました。ffmpegの出力引数は生のPCM音声へのトランスコード形式を強制しており、有効な音声ヘッダーを持たない入力は静かに失敗する仕組みになっていたのです。

研究者たちは、subfile:とconcat:の疑似プロトコルを組み合わせることでこれを克服しました。Home Assistant OSに標準で存在するバイナリ/bin/go2rtcから正確なバイト範囲を切り出してつなぎ合わせ、偽の音声ヘッダーを合成したのです。

この細工されたヘッダーによってffmpegは対象ファイルを有効な音声入力として受け入れてしまい、ファイルの実際の内容――目当てのSUPERVISOR_TOKENを含む――をトランスコードし、攻撃者が制御するWyomingサテライトのエンドポイントへストリーミングしてしまいました。

悪用の成立には2つの条件が必要でした。1つは、ペアリングされたWyoming Assistサテライトを攻撃者が制御していること(mDNSベースのペアリング時に初期のレイヤー2ネットワークアクセスが必要)、もう1つは、announceエンドポイントを操作するための有効なHome Assistant APIトークンを保有していることです。

SUPERVISOR_TOKENが窃取されると、攻撃者はHome Assistant SupervisorのAPIを悪用してホスト上でrootコマンドを実行できるようになり、スマートホームシステムの完全な侵害に至ります。

Jia Hao氏は、mDNSブロードキャストを介してWyomingサテライトをエミュレートし、それを対象のHome Assistantインスタンスとペアリングした上で、特別に細工したmedia_idペイロードでannounceサービスを発動させることで、この攻撃を実証しました。

このペイロードには、/proc/self/environで終わるように連結されたヘッダーチェーンが含まれていました。この概念実証(PoC)により、HASSIO_TOKENとSUPERVISOR_TOKENの環境変数を平文で窃取することに成功しています。

この脆弱性はHome Assistant Coreバージョン2026.5.4に影響しており、バージョン2026.6.2で修正されました。修正では、ffmpegの-protocol_whitelist引数をhttp、https、file、tcp、tlsの各プロトコルに制限した上で追加し、確実に適用されるよう-i引数の前に配置しています。

ffmpegは後続のファイルに対してオプションを順番に適用していく仕様のため、引数の並び順が正しいことを検証する単体テストも追加されました。

この修正にもかかわらず、Jia Hao氏は、値がサブプロセスのコマンドに渡される前に、入力が一見無害に見える場合であっても事前にサニタイズすることで、パッチをさらに強化できると指摘しています。

この事例は、ffmpegのようなオープンソースコンポーネントをアプリケーションに組み込む際に潜む、より広範なリスクを浮き彫りにしています。危険な使用パターンが存在すれば、アップストリーム側のパース処理に脆弱性がなくても、悪用可能なプリミティブが生まれ得るということです。

SOCの調査における死角を減らし、ANY.RUNで脅威をより早期に封じ込めることで、対応コストと業務への支障を削減しましょう。

翻訳元: https://cyberpress.org/home-assistant-ffmpeg-flaw/

ソース: cyberpress.org