C and C++ Binaries


IO.TAINT.ENV : 汚染された環境変数

要旨

ネットワーク汚染(network taint)される可能性のある値が、環境変数の設定に使用されています。

プロパティ

クラス名 Tainted Environment Variable
日本語クラス名 汚染された環境変数
クラス分類 セキュリティ (security)
ニーモニック IO.TAINT.ENV
カテゴリー
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:427 Uncontrolled Search Path Element
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで有効になっています。チェックを無効にするにはプロジェクト設定ファイル (configuration file)に以下の WARNING_FILTER ルールを追加してください。
WARNING_FILTER += discard class="Tainted Environment Variable"

#include <stdlib.h>
#include <sys/socket.h>

int io_taint_env(int sock){
    char val[16];

    if (recv(sock, val, 16, 0) <= 0 ) return -1;
    return putenv(val); /* 'Tainted Environment Variable' warning issued here */
}

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

CodeSonar ships with library models that allow it to functions such as libc setenv() and Win32 _putenv() that use one or more of their parameters to set an environment variable. If one of these functions is called with a potentially-network-tainted value in the variable name or value parameter position, a warning will be issued.

If you have created a custom library model for some function f() in terms of one of these existing models, calls to f() will also be capable of triggering Tainted Environment Variable warnings.

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

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