ESAPI 库中是否有验证可以确保 CWE-93 漏洞不会出现在 Veracode SAST 扫描中?

Is there a validation in ESAPI library that can make sure the CWE-93 vulnerability does not come up in veracode SAST scan?

我在 Veracode 平台上对我的代码进行了 SAST 扫描,我在 Java 邮件功能中发现了这个漏洞,我用它从我的应用程序发送邮件。以下是即将出现的漏洞 - CRLF 序列的不正确中和('CRLF Injection')(CWE ID 93)。

message.setSubject(subjectOfEmail);

我听说我们可以使用 ESAPI 库,但我找不到合适的验证函数。请有人帮我解决这个问题,这样它就不会再次出现在扫描中。

在 Veracode 帮助中心查看此页面,其中列出了将修复某些缺陷的验证库 类:

https://help.veracode.com/reader/DGHxSJy3Gn3gtuSIN2jkRQ/y52kZojXR27Y8XY51KtvvA

有大量 ESAPI 库可以修复 CWSE 93 漏洞,包括

org.owasp.esapi.Encoder.encodeForHTML

如果在这种情况下您想要防止的只是 header 注入问题(这与 CWE ID 93 相关),那么请查看 ESAPI 的 org.owasp.esapi.StringUtilities class。特别是静态方法 stripControls() 可能正是您所需要的。使用 Encoder.encodeForHTML() 可能会编码比您想要的更多的内容,因为它假定了 HTML 上下文。 (当然,如果您担心在某些 Web 电子邮件客户端的主题 header 上防止 XSS,您可能想要这样做。通常这些客户端应该已经内置了这种保护,所以如果您对其进行编码,它最终可能会被编码两次而无法正确呈现。)

请记住,如果您使用 StringUtilities.stripControls(),您的 Veracode 的 SAST 引擎可能仍会为 CWE 标记您的代码,但我不确定它是否将 class' 方法识别为删除在这种特殊情况下的污点标志。 (但您始终可以将其作为缓解评论提及。)

像下面的示例一样使用 ESAPI 的 decodeForHTML() 方法。

ESAPI.encoder().decodeForHTML(subjectOfEmail)