C and C++ Binaries


IO.TAINT.SIZE : 汚染された割り当てサイズ

要旨

メモリ割り当てサイズが汚染された値が元になっているため、 割り当てられたサイズが非常に小さい(バッファオーバーランを引き起こす)可能性や、もしくは非常に大きい(リソースの枯渇を引き起こす)可能性があります。

プロパティ

クラス名 Tainted Allocation Size
日本語クラス名 汚染された割り当てサイズ
クラス分類 セキュリティ (security)
ニーモニック IO.TAINT.SIZE
カテゴリー
MisraC2023 MisraC2023:D.4.14 The validity of values received from external sources shall be checked
Misra2012 Misra2012:D.4.14 The validity of values received from external sources shall be checked
AUTOSARC++14 AUTOSARC++14:A27-0-1 Inputs from independent components shall be validated.
CWE CWE:131 Incorrect Calculation of Buffer Size
  CWE:789 Memory Allocation with Excessive Size Value
TS17961 TS17961:5.45-taintsink 5.45. Tainted, potentially mutilated, or out-of-domain integer values are used in a restricted sink
CERT-C CERT-C:INT04-C Enforce limits on integer values originating from tainted sources
  CERT-C:MEM05-C Avoid large stack allocations
  CERT-C:MEM11-C Do not assume infinite heap space
  CERT-C:MEM35-C Allocate sufficient memory for an object
DISA-6r1 DISA-6r1:V-222606 The application must validate all input.
  DISA-6r1:V-222609 The application must not be subject to input handling vulnerabilities.
DISA-5r3 DISA-5r3:V-70265 The application must validate all input.
  DISA-5r3:V-70271 The application must not be subject to input handling vulnerabilities.
DISA-4r3 DISA-4r3:V-70265 The application must validate all input.
  DISA-4r3:V-70271 The application must not be subject to input handling vulnerabilities.
DISA-3r10 DISA-3r10:V-6164 The designer will ensure the application validates all input.
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっています。チェックを有効にするにはプロジェクト設定ファイル (configuration file)に以下の WARNING_FILTER ルールを追加してください。
WARNING_FILTER += allow class="Tainted Allocation Size"

#include <stdio.h>
#include <stdlib.h>

int read_myinfo(FILE *f){
    char allocsize[16];
    char *infobuf;
    int bufsize;

    if (fgets(allocsize, 16, f) == NULL ) {return -1;}
    bufsize = atoi(allocsize);
    if (bufsize <= 0 || bufsize > 1000000) {return -1;}
    infobuf = malloc(bufsize); /* 'Tainted Allocation Size' warning issued here */
    if (!infobuf){return -1;}

    /* ...remainder of function */
    free(infobuf);
    return 1;
}

ワーニングを引き起こす関数

Tainted Allocation Size warnings can be triggered by any function treated as an allocator by CodeSonar:

関連のある設定ファイルパラメータ

設定ファイルの以下のパラメータがこのワーニングクラスのチェックに影響します。