Home AssistantのFFmpeg脆弱性、攻撃者によるSupervisorトークン窃取とroot権限でのコード実行を許す

Home AssistantのFFmpeg統合機能が最近、研究者の注目を集めています。Wyoming Assistサテライト機能における安全でない引数処理を悪用すれば、Supervisorトークンを窃取し、最終的にはホストシステム上でrootとしてコマンドを実行できることが実証されたのです。

この問題はFFmpeg自体のコアなパース処理に起因するものではなく、Home Assistantが攻撃者に制御可能なデータをFFmpegのコマンドラインに直接組み込んでしまう実装方法に原因があります。これにより、強力なマルチメディアツールであるFFmpegが重大なセキュリティリスクへと変貌してしまいます。

ComputerScience

Home AssistantのFFmpeg脆弱性

Elttamによると、この問題の核心は、Home AssistantがWyomingの「announce」サービス向けにオーディオストリームを処理する際のFFmpeg利用方法にあります。ユーザーが制御可能な`media_id`の値が、FFmpegの`-i`入力引数としてそのまま渡されてしまうのです。

このパラメータのサニタイズが不十分なため、ペアリングされたAssistサテライトを制御し、かつ有効なHome Assistant APIトークンを持つ攻撃者は、無害なメディアURLの代わりに特別に細工したFFmpegプロトコル文字列を注入できます。

研究者たちは、`concat:`、`file:`、`subfile:`といった疑似プロトコルを連結することで、デバイス上に既存するバイナリから合成的な音声ヘッダーを作成し、そこに任意のローカルファイルを追加できることを実証しました。この結果、FFmpegはこれらを有効な音声入力として扱ってしまいます。

この合成ストリームが受理されると、FFmpegはデータを処理し、攻撃者が制御するサテライトへと送り返します。これにより、オーディオパイプラインが事実上、隠密なファイル窃取用のチャネルへと変わってしまうのです。

特に注目すべきは、`/proc/self/environ`を読み取れる点です。このファイルには、Home AssistantのSupervisor APIへのアクセス権を付与する`SUPERVISOR_TOKEN`のような機密性の高い環境変数が含まれています。

Image

このトークンを手にした攻撃者は、「任意のファイル読み取り」から「完全なリモートコマンド実行」へと権限を昇格させることが可能です。Supervisorのエンドポイントを悪用してrootとしてコマンドを実行し、基盤となるホストOSを侵害できてしまいます。

これを受けてHome Assistantチームは、最近のコアリリースでFFmpegの利用方法を強化しました。`-i`引数で使用できるプロトコルを制限する厳格な`-protocol_whitelist`を導入するとともに、許可リストの回避を防ぐためオプションの順序も慎重に調整しています。

このアプローチにより、実証実験で使われた危険な疑似プロトコルがブロックされ、攻撃対象領域が大幅に縮小されました。

しかし今回の一件は、スマートホームやIoTエコシステム全般に対するより広範な教訓にもなっています。FFmpegのような広く信頼されているコンポーネントであっても、堅牢な入力検証や明確な信頼境界を伴わずに統合されれば、影響の大きい脆弱性となり得るのです。

Vulnerabilityassessment service

防御側にとっての要点は二つあります。ユーザーが制御可能なパラメータをシステムユーティリティに渡す際は必ず検証・制限を行うこと、そしてホームオートメーションサービスとマルチメディア処理ツールとの統合は無害な連携ではなく潜在的な攻撃対象領域として扱うことです。

スマートホームがますます複雑化し相互接続が進む中、こうした「つなぎ役」となるコンポーネントを軽視すれば、家庭全体が気づかれにくく影響の大きい侵害にさらされかねません。

ALERT: 20以上の政府機関サイトが企業や市民にマルウェアを配信していました。 攻撃に関する詳細な調査レポートはこちら から確認し、自組織の露出状況をチェックしてください

翻訳元: https://gbhackers.com/home-assistant-ffmpeg-flaw/

ソース: gbhackers.com