メインコンテンツ

汚染されたデータの欠陥

セキュリティで保護されないソースからのコード要素に関連する欠陥

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 であるか不明なメモリを指している可能性がある

トピック

Go to top of page