C and C++ Binaries


IO.UT.PROC : 信頼されないプロセス名引数

要旨

プロセス生成関数が、信頼されない プロセス名を引数として呼出されています。

次のような場合、プロセス名引数は信頼されません:

プロパティ

クラス名 Untrusted Process Creation
日本語クラス名 信頼されないプロセス名引数
クラス分類 セキュリティ (security)
ニーモニック IO.UT.PROC
カテゴリー
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:78 Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')
CERT-C CERT-C:STR02-C Sanitize data passed to complex subsystems
DISA-6r1 DISA-6r1:V-222604 The application must protect from command injection.
  DISA-6r1:V-222606 The application must validate all input.
DISA-5r3 DISA-5r3:V-70261 The application must protect from command injection.
  DISA-5r3:V-70265 The application must validate all input.
DISA-4r3 DISA-4r3:V-70261 The application must protect from command injection.
  DISA-4r3:V-70265 The application must validate all input.
OWASP-2017 OWASP-2017:A1 Injection
OWASP-2021 OWASP-2021:A3 Injection
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっています。チェックを有効にするにはプロジェクト設定ファイル (configuration file)に以下の WARNING_FILTER ルールを追加してください。
WARNING_FILTER += allow class="Untrusted Process Creation"

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

CodeSonar ships with library models that allow it to functions such as libc execv() and Win32 CreateProcessA() that take a process name argument. If one of these functions is called with an untrusted value in the process name 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 Untrusted Process Creation warnings.

プロジェクトコンフィギュレーションファイルが、以下のルールを持つ場合 (これは、UNTRUSTED_PROC_BLACKLIST の初期設定の一部です).

UNTRUSTED_PROC_BLACKLIST += ^\s*(.*[/\\])?(a|ba|c|k|pdk|sc|tc|z)?sh(\s+.*)*$

この時、以下のコードにおいて、CodeSonar は、 Untrusted Process Creation ワーニングを発行します。

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


void ut_proc(const char *command)
{
    FILE *pipe_file;

    /* "/usr/bin/myprocess" does not match UNTRUSTED_PROC_BLACKLIST rule */
    if (pipe_file = (FILE*)popen("/usr/bin/myprocess","r")){
      /* ... */
      pclose(pipe_file);
    }

    /* "/usr/bin/sh" forbidden by UNTRUSTED_PROC_BLACKLIST setting */
    if (pipe_file = (FILE*)popen("/usr/bin/sh","r")){ /* 'Untrusted Process Creation' warning issued here */
      /* ... */
      pclose(pipe_file);
    }
}

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

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