如何获取 veracode 漏洞报告的详细信息?
我是一个流行的 JS 库Ramda的维护者,我们最近收到一份报告,称该库存在原型污染漏洞。这可以追溯到veracode 报告,其中写道:
ramda 很容易受到原型污染。攻击者可以通过该
_curry2函数将属性注入到现有的构造原型中,并修改诸如__proto__、constructor、 和 之类的属性prototype。
我明白他们所说的原型污染是什么。snyk 的 writeuplodash.merge中有一个很好的解释。Ramda 的设计有所不同,明显类似的 Ramda 代码不会受到此类漏洞的影响。这并不意味着 Ramda 的任何部分都不受其约束。但该报告没有包含任何细节,没有代码片段,也没有办法质疑他们的发现。
他们描述的细节显然是错误的。 _curry2不可能会遇到这个问题。但由于该函数被用作许多其他函数的包装器,因此报告者的误解可能隐藏着真正的漏洞。
有没有办法获取此错误报告的详细信息?演示问题的代码片段?任何事物?我已经填写了他们的联系表。答案可能仍在到来,因为才 24 小时前,但我并没有屏住呼吸——这似乎主要是一份销售表格。我所做的所有搜索都提供了有关如何使用其安全工具的信息,但几乎没有提供有关如何创建自定义报告的信息。我在 CVE 数据库中找不到这个。
var xDoc = XDocument.Load(fileName);
Run Code Online (Sandbox Code Playgroud)
我在函数中使用上面的代码来加载XML文件.功能明智的工作正常,但它显示Veracode检查后Veracode缺陷.
描述
该产品处理XML文档,该文档可以包含带有URL的XML实体,这些URL可以解析为预期控制范围之外的文档,从而导致产品将不正确的文档嵌入其输出中.默认情况下,XML实体解析程序将尝试解析和检索外部引用.如果可以将攻击者控制的XML提交给其中一个功能,则攻击者可以访问有关内部网络,本地文件系统或其他敏感数据的信息.这称为XML eXternal Entity(XXE)攻击.
建议
配置XML解析器以禁用外部实体解析.
我需要做些什么来解决它.
有一个Spring全局@ExceptionHandler(Exception.class)方法可以记录异常:
@ExceptionHandler(Exception.class)
void handleException(Exception ex) {
logger.error("Simple error message", ex);
...
Run Code Online (Sandbox Code Playgroud)
Veracode扫描表明此日志记录已经Improper Output Neutralization for Logs建议使用ESAPI记录器.有没有办法在不将记录器更改为ESAPI的情况下修复此漏洞?这是我遇到此问题的代码中唯一的地方,我试图找出如何以最小的更改来修复它.也许ESAPI有一些我没有注意到的方法?
PS当前记录器是slf4j上的Log4j
UPD: 最后我使用了ESAPI记录器.我以为它不会使用我的默认日志服务,但我错了,它只是使用我的slf4j logger接口和适当的配置.
private static final Logger logger = ESAPI.getLogger(MyClass.class);
...
logger.error(null, "Simple error message", ex);
Run Code Online (Sandbox Code Playgroud)
ESAPI具有log4j记录器和记录器工厂的扩展.可以配置在ESAPI.properties中使用的内容.例如:
ESAPI.Logger=org.owasp.esapi.reference.Log4JLogFactory
Run Code Online (Sandbox Code Playgroud) 我向 Veracode 安全扫描工具提交了我的应用程序 EAR,并在下面的代码中发现了这个缺陷:
private String url = "jdbc:mysql://localhost:8081/sql";
private String userName = "xyz";
private String password = "abc";
DriverManager.getConnection(url, user, password); // At this line i am getting this flaw.
Run Code Online (Sandbox Code Playgroud)
请有人帮助我解决 CWE-259:使用硬编码密码缺陷。
我正在尝试通过Veracode扫描iOS应用程序:一个应用程序安全平台.为了使它们扫描.IPA,.IPA需要包含调试符号.
对于正在使用的Archive构建配置和项目/目标,我已指定:
然而,在提交.IPA时,Veracode仍然给我以下错误:
没有调试符号编译的主文件 - 1个文件
我需要采取另一个步骤来创建调试符号,或许是存档吗?
我做了以下......
private static IDbConnectionProvider CreateSqlConnectionProvider(DbConfig dbConfig)
{
return new QcDbConnectionProvider(() =>
{
SqlConnectionStringBuilder csBuilder = new SqlConnectionStringBuilder();
if (!string.IsNullOrEmpty(dbConfig.DataSource))
csBuilder.DataSource = dbConfig.DataSource;
if (!string.IsNullOrEmpty(dbConfig.Database))
csBuilder.InitialCatalog = dbConfig.Database;
.
.
.
.
return new SqlConnection(csBuilder.ConnectionString);
});
}
Run Code Online (Sandbox Code Playgroud)
客户端使用VERACODE工具进行代码分析,VERACODE检测到"不可信的初始化"缺陷
return new SqlConnection(csBuilder.ConnectionString);
Run Code Online (Sandbox Code Playgroud)
此外,dbConfig正在初始化如下所示......
DbConfig configDbConfig = new DbConfig
{
Database = codeFile.ConfigurationDb,
DataSource = codeFile.DataSource,
IntegratedSecurity = sqlCredentials.UseWindowsAuthentication ? 1 : 0,
UserId = sqlCredentials.UseWindowsAuthentication ? null : sqlCredentials.SqlUserName,
ClearTextPassword = sqlCredentials.UseWindowsAuthentication ? null : sqlCredentials.SqlUserPassword
};
Run Code Online (Sandbox Code Playgroud)
还有什么我需要做的才能解决这个缺陷?此外,根据此链接,我使用创建连接字符串的 …
我们正在使用veracode对代码进行安全性分析,并在下面的代码中显示XXE缺陷,特别是在调用Deserialize()的情况下.我们如何防止序列化程序访问外部实体.我在下面尝试将XMLresolver的XMLresolver设置为null无法正常工作.
public static T DeserializeObject(string xml, string Namespace)
{
System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(T), Namespace);
MemoryStream stream =
new MemoryStream(Encoding.Default.GetBytes(xml));
XmlReaderSettings settings = new XmlReaderSettings();
// allow entity parsing but do so more safely
settings.DtdProcessing = DtdProcessing.Ignore;
settings.XmlResolver = null;
using (XmlReader reader = XmlReader.Create(stream, settings))
{
return serializer.Deserialize(reader) as T;
}
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议我可能会缺少什么或者是否还有其他事情要尝试.
因此,当我在应用程序上运行安全扫描时,我遇到了一个问题。事实证明,我无法防范XXE。这是显示有害代码的简短代码段:
static void Main()
{
string inp = Console.ReadLine();
string xmlStr = ""; //This has a value that is much too long to put into a single post
if (!string.IsNullOrEmpty(inp))
{
xmlStr = inp;
}
XmlDocument xmlDocObj = new XmlDocument {XmlResolver = null};
xmlDocObj.LoadXml(xmlStr);
XmlNodeList measureXmlNodeListObj = xmlDocObj.SelectNodes("REQ/MS/M");
foreach (XmlNode measureXmlNodeObj in measureXmlNodeListObj)
{
XmlNode detailXmlNodeListObj = xmlDocObj.SelectSingleNode("REQ/DTD");
string measureKey = measureXmlNodeObj.Attributes["KY"].Value;
if (detailXmlNodeListObj.Attributes["MKY"].Value ==
measureKey) //Checking if selected MeasureKey is same
{
XmlNode filerNode = measureXmlNodeObj.SelectSingleNode("FS");
if …Run Code Online (Sandbox Code Playgroud) 我需要创建一个临时文件并将一些数据存储到其中。为此,我编写了以下代码:
import org.apache.commons.lang.RandomStringUtils;
import java.security.SecureRandom;
[...]
String random = RandomStringUtils.random(10, 0, 0, true, true, null, new SecureRandom());
File tempFile = File.createTempFile("PREFIX-" + random, ".pdf");
[...]
Run Code Online (Sandbox Code Playgroud)
它确实工作得很好,但是当我将此代码提交给Veracode 时,出现“不安全的临时文件(CWE ID 377)”错误。我认为使用SecureRandom会使临时文件名无法被攻击者预测。
在不使 Veracode 不满意的情况下生成临时文件的正确方法是什么?
我正在花时间尝试修复 veracode 扫描缺陷 CWE-80 网页中与脚本相关的 HTML 标签的不正确中和(基本 XSS)。
我所做的是对后端进行 HTTP 调用,以便打开包含下载文件的 blob。
const xhr = new XMLHttpRequest();
xhr.open("GET", url, true);
xhr.responseType = "arraybuffer";
xhr.onreadystatechange = () => {
if (xhr.readyState === 4 && xhr.status === 200) {
var windowUrl = window.URL || window.webkitURL;
var blobUrl = windowUrl.createObjectURL(new Blob([xhr.response]));
const doc = document.createElement('a');
document.body.appendChild(doc);
doc.href = blobUrl;
if (filename) {
doc.download = filename;
}
doc.click();
windowUrl.revokeObjectURL(url);
}
}
xhr.send();
Run Code Online (Sandbox Code Playgroud)
veracode 抱怨这一行
document.body.appendChild(doc);
Run Code Online (Sandbox Code Playgroud)
对 Node.appendChild() 的调用包含跨站点脚本 (XSS) 缺陷。该应用程序使用不受信任的输入填充 HTTP 响应,从而允许攻击者嵌入恶意内容,例如 Javascript 代码,这些内容将在受害者浏览器的上下文中执行。XSS …