CWE一覧に戻る
CWE-1223

ライトワンス属性のレース条件

Race Condition for Write-Once Attributes
脆弱性 作成中
JA

ハードウェア設計におけるライトワンス・レジスタは、信頼されたソフトウェア・コンポーネントよりも先に、信頼されていないソフトウェア・コンポーネントによってプログラム可能であり、その結果、レースコンディションの問題が発生する。

集積回路やハードウェアIPソフトウェアでプログラム可能な制御や設定は、一般的にレジスタ回路に格納される。これらのレジスタの内容は、ハードウェア・リセット時に、ハードウェア・ユニットのハードウェア記述言語(HDL)コードにハード・コーディングされている定義されたデフォルト値に初期化されなければなりません。ソフトウェアによる変更からレジスタ設定を保護するために使用される一般的なセキュリ ティ保護方法は、ライトワンスにすることです。これは、ハードウェア実装がそのようなレジスタへの書き込みを一度だけ許可し、ソフトウェアが一度書き込んだ後は読み取り専用になることを意味します。これは、初期ブート・ソフトウェアがシステム設定を安全な値に設定できるようにする一方で、ランタイム・ソフトウェアがそのようなハードウェア設定を変更できないようにするのに便利です。

このような制御のハードウェア設計における実装上の問題は、このようなレジスタを競合状態のセキュリ ティ欠陥にさらす可能性があります。例えば、2つの異なるソフトウェア/ファームウェア・モジュールが並列に実行されるハードウェア設計を考えてみましょう。つのモジュールは信頼され(モジュール A)、もう1つは信頼されない(モジュール B)。この設計では、モジュール B がモジュール A より先にライトワンス・レジス タに書き込みサイクルを送信する可能性があります。フィールドがライトワンスなので、モジュール A からプログラムされた値は無視され、モジュール B によってプログラムされたプリエンプト値がハードウェアによって使用されます。

EN

A write-once register in hardware design is programmable by an untrusted software component earlier than the trusted software component, resulting in a race condition issue.

Integrated circuits and hardware IP software programmable controls and settings are commonly stored in register circuits. These register contents have to be initialized at hardware reset to defined default values that are hard coded in the hardware description language (HDL) code of the hardware unit. A common security protection method used to protect register settings from modification by software is to make them write-once. This means the hardware implementation only allows writing to such registers once, and they become read-only after having been written once by software. This is useful to allow initial boot software to configure systems settings to secure values while blocking runtime software from modifying such hardware settings.

Implementation issues in hardware design of such controls can expose such registers to a race condition security flaw. For example, consider a hardware design that has two different software/firmware modules executing in parallel. One module is trusted (module A) and another is untrusted (module B). In this design it could be possible for Module B to send write cycles to the write-once register before Module A. Since the field is write-once the programmed value from Module A will be ignored and the pre-empted value programmed by Module B will be used by hardware.

Scope: Access Control / Impact: Bypass Protection Mechanism
During hardware design, all register write-once or sticky fields must be evaluated for proper configuration.
MITRE公式ページ — CWE-1223