当前位置: 首页 > 知识库问答 >
问题:

Java安全漏洞操作系统注入代码

贺景胜
2023-03-14

运行静态扫描时,我收到一个Veracode错误:操作系统命令(“操作系统命令注入”)中使用的特殊元素的中和不当(CWE ID 78)

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

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

我如何解决这个Veracode问题?有没有“安全”的方式来运行流程?

共有2个答案

郭炳
2023-03-14

听起来这是您应用程序中的架构问题。我很确定您不想执行用户作为请求参数作为OS命令传递的假定userid。这将是设计上的OS命令注入。

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

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

如果您必须包含用户输入,请确保它经过严格验证。请注意,对于操作系统命令注入,有时只需要字母就足够了,尽管已经进行了验证,但Veracode会正确地将其标记为易受攻击。在这种情况下,如果您确信通过验证不可能运行任何恶意的东西,那么可以在Veracode中将发现标记为“通过设计缓解”。

尤祖鹤
2023-03-14

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

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

输入用户名:diginoise;rm-射频/

 类似资料:
  • Fortify安全审查告诉我们一些路径操作漏洞。大多数都是显而易见的简单解决方案,但我不明白如何解决以下问题。 "wsdlPath"是从文本框中输入的。这是无法解决的问题吗?我可以验证路径是否存在,等等,但是这对漏洞有什么帮助呢?

  • 像这样的陈述 符合SQL注入条件。但PreparedStatement如何帮助防止SQL注入呢?考虑以下场景: 如果有人输入和怎么办,因为这也将被视为有效的字符串...

  • WSO2IS 5.8包括Log4j 1.2。17 已针对Log4j 1识别出一个安全漏洞CVE-2019-17571。Log4j包括一个SocketServer,它接受序列化的日志事件并反序列化它们,而不验证是否允许对象。这可以提供可以被导出的攻击向量。 有人知道是否可以在WSO2IS 5.8的上下文中利用此漏洞? 提前谢谢!

  • 讲师:gh0stkey 整理:飞龙 协议:CC BY-NC-SA 4.0 原理与危害 SQL 注入就是指,在输入的字符串中注入 SQL 语句,如果应用相信用户的输入而对输入的字符串没进行任何的过滤处理,那么这些注入进去的 SQL 语句就会被数据库误认为是正常的 SQL 语句而被执行。 恶意使用 SQL 注入攻击的人可以通过构建不同的 SQL 语句进行脱裤、命令执行、写 Webshell、读取度武器

  • 典型的安全漏洞 Web 典型的安全漏洞种类很多,如 XSS, CSRF, SQL注入,Cross IFrame Trick, clickJacking, 文件上传 等等。下面列举两种客户端常见的安全漏洞。 XSS XSS (Cross Site Scripting),跨站脚本攻击。为了和层叠样式表(Cascading Style Sheets,CSS)区分开,跨站脚本在安全领域叫做 XSS。攻击者

  • 本文向大家介绍操作系统的保护与安全,包括了操作系统的保护与安全的使用技巧和注意事项,需要的朋友参考一下 保护和安全性要求保护计算机资源,例如CPU,软件,内存等。这扩展到操作系统以及系统中的数据。这可以通过确保操作系统中的完整性,机密性和可用性来完成。该系统必须防止未经授权的访问,病毒,蠕虫等。 保护与安全威胁 威胁是一种本质上是恶意的程序,会对系统造成有害影响。系统中发生的一些常见威胁是- 病毒