信頼できない値がループ境界として使用されています。
入力操作などにより、値が外からプログラムに投入された場合、"tainted" (信頼できない) ものとみなされます。セキュリティー攻撃では、しばしば悪意のあるユーザーにより、プログラムのエントリーポイントに変わった値が配置されるため、信頼できない値には注意する必要があります。この診断では、信頼できない値がループ境界として使用されています。これにより、悪意のあるユーザーは膨大な数のループの繰り返しを実行するプログラムを起動することができます。これは、少なくとも長時間を消費するため、アプリケーションへのサービスが拒否される可能性があります。
値を使用する前にチェックされていることが明らかな場合は、信頼できないものとして認識されません。
ID |
問題箇所 |
説明 |
---|---|---|
1 |
メモリー読み取り |
信頼できない値が使用された場所 |
2 |
呼び出し位置 |
信頼できない値が取得された呼び出し |
#include <stdio.h> int main(int argc, char **argv) { int upper, i; upper = atoi(argv[1]); // upper is unvalidated value so // this loop could run a LONG time for (i = 0; i < upper; i++) { printf("i = %d\n", i); } }
© 2010 Intel Corporation. 無断での引用、転載を禁じます。