C and C++ Binaries


IO.INJ.LIB : ライブラリインジェクション

要旨

名前でライブラリを認識するライブラリ命令は、名前の文字列が汚染されている可能性があります。

プロパティ

クラス名 Library Injection
日本語クラス名 ライブラリインジェクション
クラス分類 セキュリティ (security)
ニーモニック IO.INJ.LIB
カテゴリー
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:114 Process Control
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-6r1:V-222609 The application must not be subject to input handling vulnerabilities.
DISA-5r3 DISA-5r3:V-70261 The application must protect from command injection.
  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-70261 The application must protect from command injection.
  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.
  DISA-3r10:V-16810 The designer will ensure the application does not allow command injection.
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで有効になっています。チェックを無効にするにはプロジェクト設定ファイル (configuration file)に以下の WARNING_FILTER ルールを追加してください。
WARNING_FILTER += discard class="Library Injection"

#include <stdio.h>
#include <string.h>

int load_mylib(){
    int ret;
    char libpath[256];
    ret = uselib("/lib/mylib.so.2");
    if (!ret) return 0;

    ret = uselib("/usr/lib/mylib.so.2");
    if (!ret) return 0;

    printf("Could not find mylib: please enter location");
    if (!fgets(libpath, 128, stdin)) return -1;
    return uselib(strcat(libpath, "mylib.so.2"));  /* 'Library Injection' warning issued here */
}

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

CodeSonar ships with library models that allow it to functions such as libc dlopen() and Win32 LoadLibraryA() that take a library name parameter. If one of these functions is called with a tainted value in the library 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 Library Injection warnings.

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

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