繁体   English   中英

Java安全漏洞OS注入Veracode

[英]Java security vulnerability OS Injection Veracode

运行静态扫描时收到Veracode错误: OS命令中使用的特殊元素的不正确中和(“ OS命令注入”)(CWE ID 78)

该应用程序调用一个带有我从前端收到的参数的进程(该应用程序在内部使用,这是一个userId)。

  ProcessBuilder pb = new ProcessBuilder(PROCESS, "-A", argument);
  Process p = pb.start();     // Veracode is mentioning this line

我如何解决此Veracode问题? 是否有“安全”的方式运行流程?

假设您的userId具有定义明确的格式(数字,十六进制数字,字母数字等),也许长度始终相同。

您必须通过正则表达式将userId与相应的字符类进行匹配来进行验证,并拒绝任何不符合要求的内容,否则,您可能会受到以下攻击:

Enter Username: diginoise; rm -rf /

听起来这是应用程序中的体系结构问题。 我很确定您不想执行用户作为操作系统命令的请求参数传递的假定用户标识。 根据设计,这将是OS命令注入。

理想的解决方案是避免创建新的OS进程并使用内置的Java功能来实现您的目标。

如果必须运行外部进程,则不要在运行的内容中包含用户输入。 例如,如果您要运行静态字符串ps aux并在Java中执行“ grep”位,则Veracode查找将消失,它将更加安全。

如果绝对必须包括用户输入,请确保已对其进行了严格验证。 请注意,对于OS命令注入,有时仅字母就足够了,尽管已进行验证,但Veracode仍会正确地将其标记为易受攻击。 在这种情况下,如果您确定通过验证无法运行任何恶意软件,则可以将Veracode中的发现标记为“由设计缓解”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM