SV.STR_PAR.UNDESIRED_STRING_PARAMETER
文件路径中的字符串参数
在文件路径中使用字符串参数可能存在危险,因为这可能使重要数据受到恶意攻击。SV.STR_PAR.UNDESIRED_STRING_PARAMETER 检查器会查找使用绝对路径与字符串参数的文件操作函数的实例。
漏洞与风险
如果系统数据或调试信息通过输出流或日志功能(使未授权方可访问数据或信息)离开程序,可能暴露信息。由于输入验证错误,可能导致漏洞。在这种情况下,攻击者可能避开根,并使用“\..”字符序列通过目录遍历攻击在系统上检索或放置任意文件。此外,通过尝试检索不存在的文件,也可能泄露根的绝对路径。
对此类型错误的响应可揭露详细的系统信息,并可能导致安全机制故障和拒绝服务 (DoS) 攻击。
缓解与预防
要避免该漏洞:
- 检查文件名操作,以便使用字符串参数
- 确保堆栈跟踪和错误消息直接提交至用户不可查看的一个日志
- 确保错误消息未暴露可用于恶意攻击的路径信息
漏洞代码示例
复制
int main(int argc, char *argv[])
{
int fh;
fh = creat( "/usr/bin/ls", _S_IREAD | _S_IWRITE );
if ( fh == -1 )
return -1;
else
{
write(fh, argv[1], sizeof(argv[1]));
close( fh );
return 0;
}
}
Klocwork 针对第 4 行生成问题报告,指出对 creat 的调用在文件路径中使用的字符串参数可能存在危险。