Out-of-Bounds Read (境界外読み取り)¶
ルール ID¶
MI108
定義¶
ソフトウェアは、意図されたバッファーの終端を越えたデータ、または先頭より前のデータを読み取っています。
サンプル¶
次のコードは、CWE の該当コード サンプルの 1 つです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
このサンプルでは、メソッドは配列から入力パラメーターとして指定されたインデック位置の値を読み取っています。しかし、メソッドは指定された配列インデックスが配列の最大長より小さいことだけをチェックしており、最小値のチェックは行っていません (CWE-839)。そのため、入力配列インデックスとして負値が許され、境界外読み取り (CWE-125) が発生し、機密情報を格納したメモリにアクセスされる可能性があります。入力配列インデックスが配列に要求される最大と最小の範囲内にあることを検証するべきです。このサンプルの場合、次のように、if 文に最小範囲のチェックを含めるよう修正するべきです。
参考資料¶
- Common Weakness Enumeration: CWE-125