字符串构建覆盖问题

时间:2017-06-07 09:46:42

标签: java

我正在处理一个封面问题。在我的代码中,

    props =  
    StandardUtils.getProperties(="/Dir/tomcat/properties/lib/standardlib_" + 
    cust_id + ".properties, inst_Id);

This vulnerability is found by my coverity server and showing the message

"CID 127299 (#1 of 1): Filesystem path, filename, or URI manipulation 

(PATH_MANIPULATION)    4. sink:使用污染值构造路径或URI    /风向/ Tomcat的/属性/ LIB / standardlib _" +     cust_id +" .properties,inst_Id。这可能允许攻击者访问,    修改或测试关键或敏感文件的存在"

然后我再次将这个String分配给一个String变量,我的封面扫描了   显示相同的错误消息" "

    String loc="/Dir/tomcat/properties/lib/standardlib_" + 
    cust_id + ".properties";
    props = StandardUtils.getProperties(loc, inst_id);

但问题仍然存在。

覆盖率表明"路径操纵漏洞可以解决    适当的输入验证。将允许不安全路径的字符列入黑名单    遍历可以提高输入的安全性,但推荐的方法    是将预期字符集列入白名单。这应该排除绝对    路径和向上目录遍历。"

我的代码中会报告这些类型的问题。

我们如何解决这类问题?任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

你应该阅读path traversal,但基本上,你的代码仍然容易受到攻击,而它可能不是路径遍历攻击,特别是这可能会受到indirect object reference攻击。< / p>

如果cat "${ALL_ITEMS}" | xargs -n 1 -P ${THREADS} -I {} bash -c 'process_item "$@"' _ {} 看起来像这样:

SELECT COLUMN_NAME AS [Output]
    ,ORDINAL_POSITION
    ,prop.value AS [COLUMN_DESCRIPTION]
FROM INFORMATION_SCHEMA.TABLES AS tbl
INNER JOIN INFORMATION_SCHEMA.COLUMNS AS col ON col.TABLE_NAME = tbl.TABLE_NAME
INNER JOIN sys.columns AS sc ON sc.object_id = object_id(tbl.table_schema + '.' + tbl.table_name)
    AND sc.NAME = col.COLUMN_NAME
LEFT JOIN sys.extended_properties prop ON prop.major_id = sc.object_id
    AND prop.minor_id = sc.column_id
    AND prop.NAME = 'MS_Description'
WHERE tbl.TABLE_NAME = @TableName

我提供了一个网址

cust_id

然后这个:

String cust_id = request.getParameter("cust_id");

也会扩大:

http://your_server.com:8080/?cust_id=123

因此,假设不同客户有不同的日志文件,则可以为其他人查看该文件。

要解决此问题,您需要验证String loc = "/Dir/tomcat/properties/lib/standardlib_" + cust_id + ".properties"; ,或以某种方式检查其访问权限。

一旦解决了问题,您就可以安全地将其标记为误报。