このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
構造体のパディングによる情報漏洩
パディング バイトに含まれる可能性のある機密情報
説明
このチェッカーは、既定の Polyspace® as You Code 解析では非アクティブにされます。Polyspace as You Code 解析で非アクティブにされるチェッカー (Polyspace Access)を参照してください。
この欠陥は、構造体または共用体のパディング データを、信頼の境界を越えて渡す前に初期化していない場合に発生します。コンパイラによって構造体または共用体にパディング バイトが追加されることにより、そのメンバーの適切なメモリ アライメントを確保します。そのストレージ ユニットのビット フィールドにもパディング ビットが含まれる可能性があります。
[構造体のパディングによる情報漏洩] は、以下の場合に欠陥を報告します。
初期化されていないパディング データが含まれた構造体または共用体のポインター型の引数を使用して、信頼されていない関数を呼び出した。
すべての外部関数が信頼されていないと見なされます。
初期化されていないパディング データが含まれた構造体または共用体を、信頼されていないオブジェクトにコピーまたは代入した。
すべての外部構造体または共用体オブジェクト、すべての外部にリンクされた関数の出力パラメーター、およびすべての外部関数の戻り値のポインターが、信頼されていないオブジェクトと見なされます。
リスク
渡された構造体または共用体のパディング バイトに機密情報が含まれる場合があり、これらの情報が信頼されていないソースからアクセスされる可能性があります。
修正方法
pack
プラグマを使用するかコンパイラでサポートされている属性を使用して、メモリ アライメントのためにパディング バイトが追加されないようにします。構造体または共用体内で、パディング バイトをフィールドとして明示的に宣言および初期化します。
pack
プラグマを使用している、またはコンパイラでサポートされている属性を使用している場合でも、パディング ビットに対応するビット フィールドを明示的に宣言および初期化します。
例
結果情報
グループ: セキュリティ |
言語: C | C++ |
既定値: オフ |
コマンド ライン構文: PADDING_INFO_LEAK |
影響度: Low |
バージョン履歴
R2018a で導入