可変長配列の汚染されたサイズ
可変長配列 (VLA) のサイズがセキュリティで保護されていないソースから取得され、ゼロ、負、または大きすぎる可能性がある
説明
この欠陥は、可変長配列 (VLA) のサイズがセキュリティで保護されていないソースから取得された場合に発生します。
リスク
攻撃者が VLA のサイズを予期しない値に変更した場合、プログラムのクラッシュや予期しない動作の原因となることがあります。
サイズが正でない場合、VLA の動作は未定義となります。プログラムは想定どおりには実行されません。
サイズが無制限の場合、VLA はメモリ枯渇やスタック オーバーフローを引き起こすことがあります。
修正方法
VLA のサイズを検証して、正であり最大値より小さいことを確認します。
チェッカーの拡張
既定では、Polyspace® は外部ソースからのデータは汚染されていると仮定します。Polyspace 解析での汚染のソースを参照してください。Polyspace 解析の現在のスコープ以外から発生したすべてのデータを汚染されたものと見なすには、コマンド ライン オプション [-consider-analysis-perimeter-as-trust-boundary]
を使用します。
例
結果情報
グループ: 汚染されたデータ |
言語: C | C++ |
既定値: オフ |
コマンド ライン構文: TAINTED_VLA_SIZE |
影響度: Medium |
バージョン履歴
R2015b で導入