紹介
- Flatt Security Inc.のセキュリティエンジニア RyotaK が、OpenWrt のファームウェアアップグレード過程でセキュリティ脆弱性を発見。
- OpenWrt は組み込み機器向けの Linux ベースのファームウェアで、特にルーターで高い人気がある。
sysupgrade.openwrt.org
sysupgrade.openwrt.org は、ユーザーが希望するパッケージを選択して新しいファームウェアイメージを生成できるオンラインサービス。
- ユーザーが提供したソースコードでイメージをビルドする過程で、セキュリティ問題が発生する可能性がある。
コマンドインジェクション
sysupgrade.openwrt.org サーバーはオープンソースプロジェクトで、ソースコードは openwrt/asu でホスティングされている。
- サーバーはコンテナを使ってビルド環境を分離しているが、ユーザー入力を通じて任意のコマンドを実行できる脆弱性が発見された。
SHA-256 衝突
- リクエストのハッシュを生成する過程で、SHA-256 ハッシュが 12 文字に切り詰められて使われていた。
- ハッシュ衝突により、誤ったビルドアーティファクトを返すようサーバーを欺くことができる。
SHA-256 総当たり
- OpenCL を使って GPU 上でハッシュを総当たりするプログラムを実装したが、性能は良くなかった。
- Hashcat を使って 12 文字の衝突を見つけることに成功した。
2つの攻撃の組み合わせ
- 正当なパッケージ一覧と同じハッシュを持つコマンドインジェクションのペイロードを見つけ、攻撃を実行した。
- 攻撃者は、ユーザーが悪意のあるファームウェアへアップグレードするよう強制できる。
問題報告
- OpenWrt チームに問題を報告した後、サービスは一時停止され、迅速に修正された。
- ユーザー向けの告知が発行され、デバイスが損なわれていないか確認するよう案内された。
結論
- コマンドインジェクションと SHA-256 衝突により、
sysupgrade.openwrt.org サービスを侵害できる状態だった。
- OpenWrt チームの迅速な対応に感謝するとともに、ユーザーへ問題が速やかに通知された。
広告
- Flatt Security はセキュリティ評価および侵入テストサービスを提供しており、新しいウェブページ更新を記念して特別割引を提供している。
- Shisho Cloud という強力なセキュリティ評価ツールも提供している。
1件のコメント
Hacker Newsの意見
特定のユーザーやデバイス向けに調整されたコード実行の常態化は、検証可能性がなく、バックドア入りのビルドを生成していないことを確認できないという脆弱性を抱えている
xz-utilsの同一ビルドを使うか、セキュリティ研究者がサプライチェーン侵害の有無を確認できるビルドを使うことが重要".join"の使用は危険になり得るオープンソースはビジネス級のクローズドソースには太刀打ちできない
「サプライチェーン」という用語がブログ記事に出てこない
オープンソースツールは本来の目的に合わない形に調整されてきた
ハッシュを切り詰めるというアイデアがどう生まれたのか気になる
短い衝突を見つけるのに GPU パワーが大量に必要だという点に驚いた
ハッシュ長が64文字のうち12文字に切り詰められている点にすぐ気づいた
hashcatの性能が引数の順序によって大きく変わる理由への疑問がある非常に巧みなコード読解とエクスプロイト開発に関する素晴らしい記事