You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Veracode报错CWE-454: external initialization问题咨询(附C代码)

CWE-454: 外部初始化错误分析

你的代码触发CWE-454的核心原因是依赖未受控制的外部环境资源,且未对这些资源进行初始化或校验,具体到这段代码:

if (system("clear") == -1)
{
   fprintf(stderr, "system() failed");
}

问题细节

  • system("clear")执行时,会通过系统的PATH环境变量查找clear命令的位置。如果攻击者篡改了PATH(比如在PATH最前面加入包含恶意clear程序的目录),你的程序会优先执行恶意代码而非合法的清屏命令。
  • system函数本质是调用系统shell来解析执行命令,而shell的行为同样依赖一系列外部环境变量(如SHELL、PATH等),这些变量完全由运行环境控制,你的代码没有对其进行任何初始化或合法性校验,属于典型的"外部初始化不当"风险。

修复方案

  • 使用绝对路径调用命令:直接指定clear的绝对路径,绕过PATH查找,比如:
    if (system("/usr/bin/clear") == -1)
    {
       fprintf(stderr, "system() failed");
    }
    
    注意不同系统的clear路径可能不同,需根据目标环境调整。
  • 避免依赖外部命令:改用终端原生的清屏方式,比如输出ANSI转义序列,完全不依赖外部程序:
    printf("\033[H\033[J");
    
  • 强制初始化可信环境:如果必须使用system,先重置PATH为仅包含可信系统路径,再执行命令,示例:
    setenv("PATH", "/usr/bin:/bin", 1);
    if (system("clear") == -1)
    {
       fprintf(stderr, "system() failed");
    }
    

内容的提问来源于stack exchange,提问作者user180574

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 07:35:26