内容简介:代码审计是使用静态分析发现源代码中安全缺陷的方法,能够辅助开发或测试人员在软件上线前较为全面地了解其安全问题,防患于未然,因此一直以来都是学术界和产业界研究的热点,并且已经成为安全开发生命周期 SDL 和 DevSecOps 等保障体系的重要技术手段。360代码卫士团队基于自主研发的国内首款源代码安全检测商用工具,以及十余年漏洞技术研究的积累,推出“缺陷周话”系列栏目。每周针对 CWE、OWASP 等标准中的一类缺陷,结合实例和工具使用进行详细介绍,旨在为广大开发和安全人员提供代码审计的基础性标准化教程。
代码审计是使用静态分析发现源代码中安全缺陷的方法,能够辅助开发或测试人员在软件上线前较为全面地了解其安全问题,防患于未然,因此一直以来都是学术界和产业界研究的热点,并且已经成为安全开发生命周期 SDL 和 DevSecOps 等保障体系的重要技术手段。
360代码卫士团队基于自主研发的国内首款源代码安全检测商用工具,以及十余年漏洞技术研究的积累,推出“缺陷周话”系列栏目。每周针对 CWE、OWASP 等标准中的一类缺陷,结合实例和 工具 使用进行详细介绍,旨在为广大开发和安全人员提供代码审计的基础性标准化教程。
一、命令注入
命令注入指应用程序所执行命令的内容或部分内容源于不可信赖的数据源时,程序本身没有对这些不可信赖的数据进行正确、合理的验证和过滤,导致程序执行了恶意命令。在 JAVA 应用程序中,敏感函数的参数如 Runtime.getRuntime().exec(Stringcommand) 中的 command 参数,该参数可为 os 命令,如果该参数可由用户控制,则极易造成命令注入。
本文以JAVA语言源代码为例,分析命令注入产生的原因以及修复方法。详见 CWE ID 77: Improper Neutralization of Special Elements used in a Command (‘Command Injection’)( http://cwe.mitre.org/data/definitions/77.html )。
二、命令注入的危害
命令注入利用应用程序的输入可以执行一些特殊的 os 命令,例如:使用 cpuinfo 命令查看系统信息,使用 shutdown命令关闭服务器。从2018年1月至10月,CVE中共有 205 条漏洞信息与其相关。部分漏洞如下:
CVE | 漏洞概述 |
---|---|
CVE-2018-0714 | QNAP QTS 是中国威联通(QNAP Systems)公司的一套 Turbo NAS 作业系统。该系统可提供档案储存、管理、备份,多媒体应用及安全监控等功能。Helpdesk 是其中的一个帮助台程序。 QNAP QTS 中的 Helpdesk 1.1.21 及之前版本存在命令注入漏洞。远程攻击者可利用该漏洞在受影响的应用程序中运行任意命令。 |
CVE-2018-10900 | Network Manager VPNC plugin (networkmanager-vpnc) 是一款支持连接 Cisco VPN 的虚拟网络管理器。Network Manager VPNC 插件 1.2.6 之前版本中存在安全漏洞,该漏洞源于换行字符可以被用来将 Password helper 参数注入到配置数据中并传入到 VPNC。攻击者可利用该漏洞以 root 权限执行命令。 |
CVE-2018-1000189 | CloudBees Jenkins 是由美国公司 CloudBees 开发的一套基于Java 开发的持续集成工具,主要用于监控持续的软件版本发布/测试项目以及一些定时执行的任务。Absint Astree Plugin 是其中一个静态程序分析插件。CloudBees Jenkins Absint Astree Plugin 1.0.5 及之前版本中的 AstreeBuilder.java 文件存在命令执行漏洞。远程攻击者可利用该漏洞执行命令。 |
CVE-2018-1335 | 从 Apache Tika 版本 1.7 到 1.17,客户端可以将精心设计的头文件发送到 tika-server,该头文件可用于将命令注入运行 tika-server 的服务器的命令行。此漏洞仅影响在对不受信任的客户端开放的服务器上运行 tika-server 的漏洞。 |
三、示例代码
示例源于 Samate Juliet Test Suite for Java v1.3 ( https://samate.nist.gov/SARD/testsuite.php ),源文件名:CWE78OSCommandInjectionProperty01.java。
3.1 缺陷代码
上述示例代码在第30行使用 getProperty() 函数获取了用户的账户名称,在第43行将获取的账户名称和变量 osCommand 进行拼接,直接执行了拼接的结果。攻击者可在用户的账户名称中存入特殊的 os 命令进行操作,例如删除文件,关闭主机等命令,从而造成命令注入。
使用360代码卫士对上述示例代码进行检测,可以检出“命令注入”缺陷,显示等级为高。如图1所示:
图1 命令注入检测示例
3.2 修复代码
使用360代码卫士对修复后的代码进行检测,可以看到已不存在“命令注入”缺陷。如图2:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 【缺陷周话】第二期 :SQL 注入
- 【缺陷周话】第6期:命令注入
- 【缺陷周话】第18期:XPath 注入
- 【缺陷周话】第40期:JSON 注入
- 《缺陷周话》第四期:XML外部实体注入
- 【缺陷周话】第4期:XML 外部实体注入
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Python编程实践
Jennifer Campbell、Paul Gries、Jason Montojo、Greg Wilson / 唐学韬 / 机械工业出版社华章公司 / 2011-12-31 / 49.00元
Python是当今世界流行的编程语言之一。本书共15章,通过一些短小精悍的交互式Python脚本帮助学生进行练习,并在这个过程中掌握诸如数据结构、排序和搜索算法、面向对象编程、数据库访问、图形用户界面等基本概念以及良好的程序设计风格。本书既是一本注重科学的计算机科学专业教材,也是一本目标明确的Python参考书。 本书语言风格言简意赅,图表丰富,简单实用,是一本优秀的Python入门级读物,......一起来看看 《Python编程实践》 这本书的介绍吧!