FILE オブジェクトの不適切な使用
FILE オブジェクトのコピーの使用
説明
この欠陥は、以下の場合に発生します。
FILE オブジェクトへのポインターをデリファレンスする (
memcmp()
を使用した間接デリファレンスを含む)。FILE オブジェクト全体またはコンポーネントの 1 つをポインターによって変更する。
fopen
ファミリ関数の呼び出しから返されたのではない FILE オブジェクトのアドレスを取得する。#define ptr (&__stdout)
などのようにマクロがポインターを組み込み FILE オブジェクトのアドレスとして定義している場合、欠陥は報告されません。
リスク
一部の実装では、ストリームの制御に使用される FILE オブジェクトへのポインターのアドレスが重要です。FILE オブジェクトのコピーを指すポインターは、元のオブジェクトを指すポインターとは異なった解釈をされます。また、誤ったストリームに対して操作を実行する可能性があります。したがって、FILE オブジェクトのコピーを使用すると、ソフトウェアが応答を停止する可能性があります。これを攻撃者がサービス拒否攻撃に悪用するおそれがあります。
修正方法
FILE オブジェクトのコピーを作成しないようにします。fopen
ファミリ関数の正常な呼び出しから返されたのではない FILE オブジェクトのアドレスを使用しないようにします。
例
結果情報
グループ: プログラミング |
言語: C | C++ |
既定値: 手書きコードはオン、生成コードはオフ |
コマンド ライン構文: FILE_OBJECT_MISUSE
|
影響度: Low |
バージョン履歴
R2017b で導入