このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
危険な標準関数を使用しています
危険な関数が格納先バッファーでバッファー オーバーフローを引き起こす可能性がある
説明
この問題は、コードで、バッファー オーバーフローになる可能性があるやり方でデータをバッファーに書き込む標準関数が使用されている場合に発生します。
次の表に、危険な標準関数、各関数を使用した場合のリスク、および代用する関数を示します。チェッカーは以下にフラグを設定します。
本質的に危険な関数の使用。
危険な可能性のある関数の使用 (データが書き込まれるバッファーのサイズをコンパイル時に決定可能な場合のみ)。チェッカーは、バッファーが動的に割り当てられるこのような関数の使用にフラグを設定しません。
危険な関数 | リスク レベル | より安全な関数 |
---|---|---|
gets | 本質的に危険 — コンソールからは入力の長さを制御できない。 | fgets |
std::cin::operator>> および std::wcin::operator>> | 本質的に危険 — コンソールからは入力の長さを制御できない。 | 入力長を制御するには、 バッファー オーバーフローと入力切り捨てが発生しないようにするには、 |
strcpy | 潜在的に危険 — 格納先バッファーのサイズが小さすぎて、ソース バッファーと null 終端が収まらない場合は、バッファー オーバーフローが発生する可能性がある。 | 関数 strlen() を使用してソース バッファーのサイズを決定し、格納先バッファーがソース バッファーと null 終端を収められるように十分なメモリを割り当てます。strcpy の代わりに、関数 strncpy を使用します。 |
stpcpy | 潜在的に危険 — ソースの長さがコピー先より大きいと、バッファー オーバーフローが発生する可能性がある。 | stpncpy |
lstrcpy または StrCpy | 潜在的に危険 — ソースの長さがコピー先より大きいと、バッファー オーバーフローが発生する可能性がある。 | StringCbCopy 、StringCchCopy 、strncpy 、strcpy_s または strlcpy |
strcat | 潜在的に危険 — 連結された結果が作成先より大きいと、バッファー オーバーフローが発生する可能性がある。 | strncat 、strlcat または strcat_s |
lstrcat または StrCat | 潜在的に危険 — 連結された結果が作成先より大きいと、バッファー オーバーフローが発生する可能性がある。 | StringCbCat 、StringCchCat 、strncay 、strcat_s または strlcat |
wcpcpy | 潜在的に危険 — ソースの長さがコピー先より大きいと、バッファー オーバーフローが発生する可能性がある。 | wcpncpy |
wcscat | 潜在的に危険 — 連結された結果が作成先より大きいと、バッファー オーバーフローが発生する可能性がある。 | wcsncat 、wcslcat または wcncat_s |
wcscpy | 潜在的に危険 — ソースの長さがコピー先より大きいと、バッファー オーバーフローが発生する可能性がある。 | wcsncpy |
sprintf | 潜在的に危険 — 出力の長さが不明な長さや値に依存していると、バッファー オーバーフローが発生する可能性がある。 | snprintf |
vsprintf | 潜在的に危険 — 出力の長さが不明な長さや値に依存していると、バッファー オーバーフローが発生する可能性がある。 | vsnprintf |
リスク
これらの関数はバッファー オーバーフローの原因となることがあり、攻撃者はこれを利用してプログラムに侵入できます。
修正方法
修正方法は欠陥の根本原因によって異なります。上の表に記載されている修正と以下の修正付きのコード例を参照してください。
問題を修正しない場合は、改めてレビューされないように結果またはコードにコメントを追加します。詳細は、以下を参照してください。
Polyspace ユーザー インターフェイスでのバグ修正または正当化による結果への対処 (Polyspace ユーザー インターフェイスで結果をレビューする場合)
Polyspace Access でのバグ修正または正当化による結果への対処 (Polyspace Access) (Web ブラウザーで結果をレビューする場合)。
コードへの注釈付けと既知の結果または許容可能な結果の非表示 (IDE で結果をレビューする場合)
例
結果情報
グループ: セキュリティ |
言語: C | C++ |
既定値: オフ |
コマンド ライン構文: DANGEROUS_STD_FUNC |
影響度: Low |