CWE一覧に戻る
CWE-1326

ハードウェアに欠けている不変の信頼の根源

Missing Immutable Root of Trust in Hardware
脆弱性 レビュー中
JA

ハードウェアに不変の信頼ルートが欠落していると、セキュアブートをバイパスしたり、信頼されていないブートコードや敵対的なブートコードを実行したりすることが可能になる。

システムオンチップ(SoC)は、署名されたブートコードを検証または認証することで、セキュアブートを実装します。コードの署名は、SoCが信頼するエンティティによって達成されます。 ブートコードを実行する前に、SoCはコードまたはコードが署名された公開鍵が改ざんされていないことを検証します。SoCが依存するその他のデータは、「セキュア・ブートが有効かどうか」といったヒューズのシステム・ハードウェア設定です。これらのデータは、セキュア・ブート・フローを実行するためのRoT(Root of Trust)を確立する上で重要な役割を果たす。

RoTを実現する多くの方法の1つは、コードとデータをメモリやヒューズに格納することです。このメモリは不変であるべきで、つまり、RoTがメモリにプログラム/プロビジョニングされると、そのメモリはロックされ、それ以上のプログラミングや書き込みができなくなるはずです。もしメモリの内容(つまりRoT)が変更可能であれば、敵対者はRoTを変更して自分の選んだコードを実行することができ、その結果セキュアブートが危うくなります。

ROM のようなコンポーネントの場合、認証され認可された更新を現場で可能にするために、安全なパッチ/更新機能がサポートされるべきであることに注意してください。

EN

A missing immutable root of trust in the hardware results in the ability to bypass secure boot or execute untrusted or adversarial boot code.

A System-on-Chip (SoC) implements secure boot by verifying or authenticating signed boot code. The signing of the code is achieved by an entity that the SoC trusts. Before executing the boot code, the SoC verifies that the code or the public key with which the code has been signed has not been tampered with. The other data upon which the SoC depends are system-hardware settings in fuses such as whether "Secure Boot is enabled". These data play a crucial role in establishing a Root of Trust (RoT) to execute secure-boot flows.

One of the many ways RoT is achieved is by storing the code and data in memory or fuses. This memory should be immutable, i.e., once the RoT is programmed/provisioned in memory, that memory should be locked and prevented from further programming or writes. If the memory contents (i.e., RoT) are mutable, then an adversary can modify the RoT to execute their choice of code, resulting in a compromised secure boot.

Note that, for components like ROM, secure patching/update features should be supported to allow authenticated and authorized updates in the field.

Scope: Authentication, Authorization / Impact: Gain Privileges or Assume Identity; Execute Unauthorized Code or Commands; Modify Memory
When architecting the system, the RoT should be designated for storage in a memory that does not allow further programming/writes.
During implementation and test, the RoT memory location should be demonstrated to not allow further programming/writes.
MITRE公式ページ — CWE-1326