C and C++ Binaries


IO.UT.HOST : 信頼されないネットワークホスト

要旨

ネットワーク関数が、信頼されない ネットワークホスト (名前又はアドレス)を引数として呼出されています。

次のような場合、ネットワークホスト引数は信頼されません:

プロパティ

クラス名 Untrusted Network Host
日本語クラス名 信頼されないネットワークホスト
クラス分類 セキュリティ (security)
ニーモニック IO.UT.HOST
カテゴリー
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:99 Improper Control of Resource Identifiers ('Resource Injection')
  CWE:506 Embedded Malicious Code
  CWE:610 Externally Controlled Reference to a Resource in Another Sphere
CERT-C CERT-C:INT04-C Enforce limits on integer values originating from tainted sources
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.
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっています。チェックを有効にするにはプロジェクト設定ファイル (configuration file)に以下の WARNING_FILTER ルールを追加してください。
WARNING_FILTER += allow class="Untrusted Network Host"

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

CodeSonar ships with library models that allow it to functions such as libc getaddrinfo() that take a network host argument. If one of these functions is called with an untrusted value in the network host 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 Network Host warnings.

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

NETWORK_HOST_BLACKLIST += allow ^0:0:0:0:0:0:0:1$
NETWORK_HOST_BLACKLIST += .+\.[a-zA-Z]{2,6}($|\s+|\\|/|:)

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

#include <stdlib.h>
#include <netdb.h>

int ut_host(void){
    int status;
    struct addrinfo *res;

    /* 0:0:0:0:0:0:0:1 is permitted by NETWORK_HOST_BLACKLIST rule */
    status = getaddrinfo("0:0:0:0:0:0:0:1", "80", NULL, &res);
    if (status != 0)  {return status;}
    freeaddrinfo(res);

    /* 2001:DB8:1:2:3:4:5:6 is forbidden by NETWORK_HOST_BLACKLIST rule */
    status = getaddrinfo("2001:DB8:1:2:3:4:5:6", "80", NULL, &res); /* 'Untrusted Network Host' warning issued here */
    if (status != 0) {return status;}
    freeaddrinfo(res);

    /* ... */
    return 0;
}

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

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