Nozomi Networks セキュリティ・リサーチ・ラボでは、日々、多種多様な組込み機器を扱っています。私たちの目的はケースバイケースで異なりますが、最も一般的な状況は、製品のプロトコルを深く理解するために製品を調査する場合や、ソリューションのセキュリティ態勢を評価する場合です。
これらの目標を達成するために、多くの場合、ファームウェア・イメージを解析し、解析の最終 ターゲットとなる特定のバイナリを抽出する必要がある。このプロセスは、実際のイメー ジを得ることから始まり、デバイス・ハードウェアから直接バイナリをダンプすることを含むかもしれな い。
このブログでは、入力バイナリを与えられた解析者が、ファームウェアの構造を把握し、最終 的に、コンフィギュレーション・ファイルに加えて、暗号化されていない実行可能コードを取得する、次 のステップに焦点を当てる。
ファームウェア検査の問題
多くのベンダは、標準的なビルド・プロセスで作成されたファームウェア・イメージを配布している。彼らは通常、選択されたファイルシステムや、使用された圧縮アルゴリズ ムなどの詳細を文書化しない。しかし、ある程度の経験を持ち、適切なツール群を持つ研究者であれば、これらの技術的な 詳細を素早く判断し、評価を進めることができる。
ここ数年、私たちは、ベンダーが、純粋なブラックボックス・インタラクション以外のあらゆるタイプの 分析をブロックする目的で、ファームウェアを積極的に難読化または暗号化する傾向を目にしてきた。場合によっては、ベンダは、これらの取り組みを、セキュ リティ主導と表現することさえある。
このような考え方は理解できるが、我々の経験によれば、ネットワーク・デバイスをデプロイ している組織にとっては、逆である。デバイスのファームウェアを検査することができれば、ソフトウェア・スタックのレイヤーを通 じて、その攻撃対象領域を深く理解することができる。
新たに出現した高リスクの脆弱性の中には、スタックの異なるレイヤーのコンポーネントに影響を及ぼすものがあるため、組み込みデバイスのソフトウェアサプライチェーンを分析することは非常に重要です。これは、もともとリスクがなかったという意味ではなく、セキュリティ・コミュニティが問題の大きさを完全に理解したのは、むしろ今だけだということです。
このブログの意図は、特定のベンダーを特定することではなく、むしろこの問題についての健全な議論を促進することである。我々がこの問題にどのように取り組んでいるかを説明するために、一般的な顔認証/熱認証カメラを選択し、最終的にどのようにファームウェアを分析することができたかをハイレベルで説明する。
Dahua顔認証アクセスコントローラーファームウェア復号化
DHI-ASI7213X-T1は顔認証アクセスコントローラで、特にデバイスを覗き込んでいる人の温度を検出することができます。アクセスコントローラーを設定するために、ウェブ管理インターフェースが利用できる。SSHアクセスを有効にすることができるが、驚いたことに、ウェブインターフェースに設定した認証情報はリモートシェルには適用されない。私たちの理解では、SSHアクセスはDahuaのサポートにのみ利用可能であり、必要が生じた場合に利用できる。
ファームウェアはベンダーのウェブサイトからダウンロードできるが、バイナリを解凍すると、プロセスが期待通りに進まないことに気づくだろう。一連のuImageファイルを展開することができるが、これらのバイナリのほとんどのコンテンツは独自のスキームで暗号化されていた。特に、最終的な実行ファイルを含むパーティションイメージにはアクセスできない。
先に解凍した成果物から、暗号化されなかったすべてのパーティションについて広範な解析を開始した。そして、これらのバイナリのかなりの部分をリバースエンジニアリングし、最終的に復号化プロセスを担う関数を特定した。
復号化関数にはブロック暗号の上にいくつかのカスタマイズが含まれており、スキーム全体の再実装にこれ以上時間を費やしたくなかったので、エミュレーション・ベースのアプローチを選択し、オリジナルのコードに復号化を実行させることにした。
つまり、暗号化されていないパーティションを正しいメモリー・アドレスにマッピングし、引数として渡された暗号化されたパーティションに対して復号化関数を呼び出し、最後にその結果をメモリーからディスクにダンプするローダー・スクリプトを書くことになる。
最終的には、復号化されたイメージを解凍し、静的にアクセスできるようになった。実行バイナリーに完全にアクセスできるようになれば、通常の解析が可能になる。
このような分析を行うために必要な時間や専門知識を考慮すれば、資産所有者や他の研究者がこのような分析を行うことを断念したであろうことは容易に想像できる。
無名によるセキュリティは良い戦略ではない
この投稿では、ファームウェア・コードの抽出と復号化の問題を提示し、今日の脅威の状況において、 資産所有者が、ネットワークに配置されたデバイスを動かすソフトウェア・スタックを理解する必 要がある理由について論じた。そして、我々は、顔認証アクセス・コントローラのセキュリティ・ポ ジションを評価するために、実行しなければならなかったファームウェア復号化プロセスの例を提供した。
この製品で使用された全体的な暗号化スキームは、最終的には理解されたが、一般的に、ファームウェア の暗号化は、ネットワークとベンダーのセキュリティ体制にとって逆効果である。私たちは、高度な悪意ある行為者が、ターゲット・デバイスのファームウェアにアクセスすることに成功す る一方で、同様のリソースとスキルを持たないアセット・オーナーは、事実上、暗闇の中に取り残されること を想定する必要がある。
ネットワークの透明性は、基本的なレベルで何が起きているのかを理解するためのベースライン・ツールを提供するため、このような状況において必要とされる。ファームウェア・イメージの解析は、ネットワーク観測性を補完するアプローチであり、研究者がデバイ スのソフトウェア・スタックに関する知識をさらに洗練させることを可能にするからである。