メインコンテンツ
汚染されたデータの欠陥
セキュリティで保護されないソースからのコード要素に関連する欠陥
Tainted data defects (汚染されたデータの欠陥) は、特定の操作で汚染されたデータの使用に対してフラグを設定します。セキュリティで保護されないソースに由来するデータは汚染されたデータです。Polyspace® は以下のソースをセキュリティで保護されていないものと見なします。
volatile オブジェクト。
標準ライブラリ関数を使用して取得された外部入力。外部入力には以下のものがあります。
ユーザー入力
環境変数
ファイルの内容またはファイル パス
ハードウェアから取得したデータ
このようなセキュリティで保護されないソースから取得された汚染されたデータは、データを使用する前に検証してください。悪意のある攻撃者は検証されていない汚染されたデータを利用してプログラムを攻撃し、欠陥を引き起こすことができます。汚染されたデータの欠陥は、特定の操作で検証されていない汚染されたデータの使用に対してフラグを設定します。たとえば、Polyspace は以下のものにフラグを設定します。
さまざまな数値演算での汚染されたデータ。
パス、コマンド、環境変数、ホスト ID などの外部制御された要素。
割り当てやデリファレンスなどのメモリ操作での汚染されたデータ。
Polyspace 結果
汚染されたインデックスによる配列へのアクセス | 配列範囲外の可能性がある、セキュリティで保護されないソースに由来する配列インデックス |
外部制御されるパスから実行されたコマンド | セキュリティで保護されないソース由来のパス引数 |
外部制御されるコマンドの実行 | オペレーティング システムでのコマンドの投入に対し脆弱な、セキュリティで保護されないソース由来のコマンド引数 |
外部で制御される要素を使用したホストの変更 | セキュリティで保護されないソースに由来するホスト ID の変更 |
外部制御されるパスから読み込まれたライブラリ | 外部制御されているパスに由来するライブラリ引数を使用 |
汚染された値で制限されたループ | セキュリティで保護されないソース由来の値で制御されているループ |
汚染されたサイズでのメモリの割り当て | メモリ関数のサイズ引数がセキュリティで保護されないソースに由来する |
汚染されたオフセットによるポインターのデリファレンス | オフセットがセキュリティで保護されていないソースから取得され、デリファレンスが範囲外の可能性がある |
汚染された除算オペランド | 除算演算 (/ ) のオペランドがセキュリティで保護されないソースに由来 |
汚染されたモジュロ オペランド | 残余演算 (% ) のオペランドがセキュリティで保護されないソースに由来 |
汚染された NULL 文字列または非 NULL 終端文字列 | 引数がセキュリティで保護されていないソースから取得され、NULL か NULL で終了していない可能性がある |
汚染された符号変化の変換 | セキュリティで保護されないソースに由来する値の符号の変化 |
可変長配列の汚染されたサイズ | 可変長配列 (VLA) のサイズがセキュリティで保護されていないソースから取得され、ゼロ、負、または大きすぎる可能性がある |
汚染されたソースを要注意の関数と共に使用 | Data obtained from an untrusted source is passed to user-defined sensitive function (R2023b 以降) |
汚染された文字列形式 | 入力形式引数がセキュリティで保護されないソースに由来している |
外部制御される環境変数を使用しています | 環境変数の値がセキュリティで保護されていないソースから取得される |
汚染されたポインターの使用 | セキュリティで保護されないソースに由来するポインターは NULL であるか不明なメモリを指している可能性がある |
トピック
- Polyspace 解析での汚染のソース
セキュリティ リスクを避けるため、外部ソースから取得された、汚染されたデータを検証します。
- Bug Finder 欠陥グループ
Bug Finder の欠陥チェッカーは、データ フロー、同時実行、数値などのグループに分類されています。