信頼できない割り当てサイズ

メモリー割り当てのサイズとして信頼できない値が使用されています。

入力操作などにより、値が外からプログラムに投入された場合、"tainted" (信頼できない) ものとみなされます。セキュリティー攻撃では、しばしば悪意のあるユーザーにより、プログラムのエントリーポイントに変わった値が配置されるため、信頼できない値には注意する必要があります。この診断では、信頼できない値が割り当てサイズとして使用されています。これにより、悪意のあるユーザーは膨大なメモリー量を割り当てるプログラムを起動することができます。これは、低メモリー状態を引き起こし、アプリケーションが不安定になります。また、ストレージを割り当てる呼び出しで null チェックが行われない場合、NULL ポインターの逆参照が発生します。

値を使用する前にチェックされていることが明らかな場合は、信頼できないものとして認識されません。

ID

問題箇所

説明

1

メモリー読み取り

信頼できない値が使用された場所

2

呼び出し位置

信頼できない値が取得された呼び出し


extern DoWork(int *p);

int main(int argc, char **argv)
{
    size_t size;
    int *p;

    size = atoi(argv[1]);

    // size is unvalidated value
    p = (int*) malloc(size);
    
    DoWork(p);
}
        

© 2010 Intel Corporation. 無断での引用、転載を禁じます。