- Hanwha VisionのカメラファームウェアのWeb管理UIファイル約30件に同一のGitHubトークンが含まれており、このトークンは組織内の数百のリポジトリに対して管理者権限を持っていた
- ファームウェアの
fwupgraderはハードコードされたAESキーを静的テーブルとXORして復元した後、opensslでルートファイルシステムを復号しており、キーとIVは同一モデル群で共通利用されていた - Viteのビルド変数が
process.env全体に設定されていたため、CIジョブの環境変数が成果物に記録され、GITHUB_NPM_TOKENや複数の内部設定までカメラファームウェアに含まれていた - 約500件のファームウェアを同じ方法で調査した結果、62%を抽出でき、GitHubトークンが見つかった3件のファームウェアにはすべて同じトークンが含まれていた
- Hanwhaは報告後12時間以内にトークンを失効させたが、CI環境全体をクライアント向け成果物に埋め込む構成は、認証情報や内部インフラ情報を製品に露出させうる
ファームウェアの入手と最初の暗号化レイヤー
- Hanwha VisionのWebサイトではカメラモデルごとのファームウェアイメージが公開されており、ファイルをダウンロードして分析できた
binwalkでイメージを調べると、カメラ向けAIコンポーネントを含む別のtarballと、暗号化されたfwimage.tgzが見つかった- Matt BrownによるHanwhaファームウェア復号の分析に従い、
HTWとモデル番号を組み合わせたパスワードを使用した- 分析対象では
HTWXNP-9300RWが有効だった
- 分析対象では
- 展開したtarballの中には別方式で暗号化されたもう1つの
fwimage.tgzがあり、既存の復号手順をそのまま再利用することはできなかった
fwupgraderで復号方式を復元
- 外側のtarballに含まれる
fwupgraderバイナリをGhidraとClaude Codeで分析し、実際のルートファイルシステムを抽出した fwupgraderには復号方式を隠すための難読化が施されていた- AESキーをバイナリ内部の小さな静的キーテーブルとXORし、実行時に再構成する
- IVはバイナリ内に平文で入っている
opensslコマンド断片も同じ方式でXOR難読化されていた
- 復元されたコマンドはSHA-256とAES-256-CBCを使う次の形式だった
openssl enc -md sha256 -aes-256-cbc -d \ -K <KEY> -iv <IV> -in <INPUT> -out <OUTPUT> - キーとIVはハードコードされており、同一モデル群で共通利用されていた
KEY = dfa049bb922e63e2decc764af5628068e5b7a2662e479a615b14643e567579b0 IV = 53f926801b81454a4f889c9a390db6e6
ファームウェアに含まれていたGitHub管理者トークン
- 抽出したルートファイルシステムを
trufflehogで検査すると、同一のGitHubトークンが約30件のファイルで重複して見つかった - このトークンはHanwhaのGitHub組織に属する数百のリポジトリに対して管理者権限を持っていた
- カメラUIはViteでビルドされており、あるビルド変数が
process.env全体に設定されていたため、CIジョブの環境全体が生成ファイルに記録されたことが確認されたvar W = { DATAPORT: "9090", GIT_LFS_SKIP_SMUDGE: "1", npm_command: "run-script", KUBERNETES_SERVICE_PORT_HTTPS: "443", GITHUB_NPM_TOKEN: "<snip>:ghp_…REDACTED…", npm_config_userconfig: "/home/docker/.npmrc", // etc } - 実機のカメラがないため、実際に動作していたかは検証できなかった
- 管理UIにアクセスしたユーザーへトークンがネットワーク経由で送信されていた可能性がある
- ファイルがディスク上に存在するだけで、実際には配信されていなかった可能性も残る
CI環境に含まれていたDoDアドレス
- 露出していた環境変数には、米国国防総省に割り当てられたIPアドレスも含まれていた
SWARM_MASTER_NFS_ADDRESS:55.101.212.23OTEL_ELASTIC_URL:http://55.101.212.21:5601/<snip>CIMIP:55.101.211.213
- これらのアドレスが外部と通信しない内部サービス向けに任意使用されていたのか、Hanwhaと米国国防総省の関係に由来するのかは確認されていない
- Hanwha VisionはSamsung Techwinとして設立された映像監視企業であり、Hanwha Groupの子会社でもある
- 過去の製品にはK9 Thunder自走砲、K10弾薬運搬装甲車、K2 Black Pantherのサブシステム、SGR-A1警備ロボットが含まれる
- SGR-A1は武装警備ロボットである
- CIをHanwhaの中央組織が提供し、関連変数がグループ会社のHanwha AerospaceやHanwha Defense USAの要件で共有されていた可能性もあるが、これは未確認の推測にすぎない
全ファームウェアの調査
- 偶然の単発事例なのか、別のトークンがさらに存在するのかを確認するため、HanwhaのWebサイトからダウンロードできるカメラファームウェアを収集した
- 約600機種のカメラのうち、ファームウェアが提供されているモデルを対象に約500件のファームウェアを確保した
- 同じ方法で62%を抽出できたが、残りが失敗した理由は確認できなかった
- GitHubトークンが入っていたファームウェアは3件で、いずれも同一のトークンを含んでいた
報告と対応
- トークンの位置を特定できる最小限の情報を、Hanwhaの公開されているセキュリティ報告用メールアドレスへ送った
- Hanwhaは報告後12時間以内に応答し、当該トークンを失効させた
- GitHubトークンがファームウェアに含まれていたのは問題だが、報告の受理と対処は非常に迅速に行われた
1件のコメント
Hacker Newsのコメント
メーカーがサポートしつつ、必要に応じてrootfsを削除できるホワイトラベルIPカメラや、準プラグ&プレイ製品を探している
以前はケースすらない高価な開発キットくらいしかなかったが、今はGoodCamのような選択肢が出てきたようだ
ONVIFカメラは大半のネットワークビデオレコーダー(NVR)と互換性があり、オープンソースのNVRも複数ある
安価なPoEカメラを外部に公開しなければメーカー製ファームウェアのセキュリティはそれほど重要ではないが、VLANとネットワーク分離は非常に綿密に構成する必要がある
安定性はApple HomeKitと同程度だが、あまり優秀とは言えない
Sonoff Slim Gen2を2台、問題なくアップグレードできた
Stránka nenalezena、There's been a glitch...エラーを出しており、動作していないようだファームウェアに米国防総省のIPアドレスが埋め込まれているほうが大きな問題に見え、韓国製のセキュリティ製品は避けるべきだと感じた
多くのサプライヤーが危険なデフォルト値、壊れたセキュリティ、ハードコードされた値を使っている
セキュリティを最優先にしないとしても、少なくともハードコードされた認証情報の検査のような基本的なチェックは必要だ
カメラは別VLANに入れ、そのVLANのインターネットアクセスを完全に遮断するのが最低限の対策だ
以前確認したところ、多くのOBD-IIドングルが同じMACアドレスで出荷されており、その結果、複数のWebサイトのすべての情報にアクセスできた
こうした問題は避けたくても起こり続けるものだ
Webサイトがクライアント提供のMACアドレスを認証手段にしていたなら、典型的なIoTセキュリティの失敗だ
製品名からセキュリティを外して、単にカメラと呼んだほうがよさそうだ
このブログが外部リンクアイコンを誤って使っている点が気になる
a[href*="://"]::afterセレクタは内部リンクがhref="/about"のような相対パスだと仮定しているが、このサイトはナビゲーションリンクにも[https://hhh.hn/about](https://hhh.hn/about)のような絶対URLを使っているため、すべてのリンクにアイコンが付いてしまうサイトのアドレスで始まるリンクを除外すれば解決できる:
a[href*="://"]:not([href^="https://hhh.hn"])::after最近購入した室内用ムード照明は、専用アプリなしでは制御できなかった
GoogleストアからAPKを入手して解析してみると、バックエンドやShopifyなどのAPIキーが実質そのまま入っていたが、まだそれを使って何かをしたわけではない
セキュリティを気にする開発者なら、App AttestやGoogleストアの同等機能を使うだろう
ただしShopifyストアのコンサルをした経験からすると、低価格のコンサルタントやデザイナーが提供するコード品質はひどいことが多いので驚きはしない
研究者を法的な結果から守ってくれる会社があったが、名前は思い出せない
LLMのせいでコード難読化は事実上無力化された
難読化は作業を退屈にして妨げていただけだが、AIはそうした手間を気にしない
国家組織や犯罪ハッカー集団は、その手間を十分に引き受ける
こうしたシステムを米国の防衛産業展示会で見たことがあるので、実際にどこかで使われている可能性が高い