EN JP CN

SV.TAINTED.FMTSTR

SV.TAINTED.FMTSTR

未検証入力 - 信頼されないデータが書式文字列として使用されます。

脆弱性とリスク

SV.TAINTED.ALLOC_SIZE を参照してください。

軽減と防止

SV.TAINTED.ALLOC_SIZE を参照してください。

例 1

1  #define TKS_MAXBUFFER 1024
2  int check_tklines(char *host, char *user, int lifetime) {
3    FILE *iconf, *iconf_tmp;
4     //...
5     if ((iconf = fopen(CPATH, "r")) && (iconf_tmp = fopen(TKSERV_IRCD_CONFIG_TMP, "w"))){
6  
7       char buffer[TKS_MAXBUFFER];
8       while (fgets(buffer, TKS_MAXBUFFER, iconf)){
9         if ((*buffer != 'K') || (!strstr(buffer, "tkserv"))){
10            fprintf(iconf_tmp, buffer);
11        }
12        //...
13 
14       }
15     }
16     return 0;
17   }

Klocwork は 10 行目で指摘レポートを生成し、未検証文字列 'buffer' が 8 行目での 'fgets' の呼び出しを通じて渡され、10 行目での 'fprintf' の呼び出しを通じて書式文字列として使用できることを示します。