首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java安全漏洞OS注入Veracode

Java安全漏洞OS注入Veracode
EN

Stack Overflow用户
提问于 2017-11-10 08:51:21
回答 2查看 1.9K关注 0票数 2

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

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

代码语言:javascript
复制
  ProcessBuilder pb = new ProcessBuilder(PROCESS, "-A", argument);
  Process p = pb.start();     // Veracode is mentioning this line

我怎样才能解决这个Veracode问题?是否有一种“安全”的方法来运行一个过程?

EN

回答 2

Stack Overflow用户

发布于 2017-11-10 09:11:56

想必您的userId有一个定义良好的格式(数字、十六进制数字、字母数字、.),也许它总是相同的长度。

您必须通过regex将userId匹配到适当的字符类来验证它,并拒绝任何不符合的内容,否则,您将面临以下攻击:

Enter Username: diginoise; rm -rf /

票数 2
EN

Stack Overflow用户

发布于 2017-11-10 23:11:50

听起来这是应用程序中的一个架构问题。我非常肯定,您不希望以OS命令的形式执行由用户传递的假定userid作为请求参数。这将是通过设计的OS命令注入。

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

如果您必须运行外部进程,请不要将用户输入包含到正在运行的进程中。例如,如果要运行静态字符串ps aux,并在Java中执行"grep“位,那么Veracode查找就会消失,而且它将更加安全。

如果您绝对必须包括用户输入,请确保它是非常严格的验证。注意,对于OS命令注入,有时字母可能就足够了,尽管验证已经到位,Veracode将正确地将其标记为易受攻击。在这种情况下,如果您确信通过验证,不可能运行任何恶意的操作,则可以将Veracode中的发现标记为“通过设计减轻”。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47218854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档