Bash 通过特殊环境变量进行代码注入攻击

2014 年 9 月 30 日3560

Bash 通过特殊环境变量进行代码注入攻击

发布者:互联网

 日期:

2014-09-26 08:24:36 浏览次数:0 (共有_条评论)

查看评论 | 我要评论

  

Bash 或Bourne again shell,是一个类UNIX shell 脚本,可能是任何Linux系统中最常见的安装组件。从1980年诞生到现在,bash 已经从一个简单的基于终端的命令解释器演进到诸多其他的奇特用途。

在Linux中,环境变量影响着系统软件。它们都是由一个名称和对名称的赋值构成。bash shell也是如此。在程序后台运行bash shell很常见。通常用于向远程用户提供一个shell(例如通过ssh,telnet),为CGI脚本提供解析器(例如Apache),甚至提供有限的命令执行支持(例如git)。

回到主题,你可以在调用bash shell前使用特殊加工的值创建环境变量,这个事实暴露了系统的脆弱。这些变量可以包含代码,随着shell调用执行。这些加工过的变量名并没有什么,主要是它们的内容。在以下的语境中,脆弱暴露无遗:

ForceCommand是 sshd中使用的环境变量,它向远程用户提供有限的命令执行权限。这个缺陷可以被绕过并提供任意的命令执行权限。一些Git和Subversion部署使用这样的shell。OpenSSH的常规使用不受影响,因为用户已经进入了shell。

如果CGI脚本使用bash或者产生大量的子shell,使用mod_cgi或mod_cgid的Apache服务器将收到影响。这些子shell可能被C语言的system/popen使用,可能被Python的os.system/os.popen使用,可能被运行在CGI模式下的PHP的system/exec使用,可能被使用shell的Perl中的open/system使用.

执行mod_php的PHP脚本即使大量产生子shell也不会收到影响。

DHCP客户端调用shell脚本以配置系统,使用来自潜在的恶意服务器的值。这将允许任意的命令运行,尤其作为DHCP客户机上的root.

各式各样的守护进程和SUID/特权程序可能使用用户设置以及被用户影响的环境变量执行shell脚本,可允许任意的命令运行。

任意可能陷入shell险境的其他应用,或是运行shell脚本将bash作为解释器的应用。不引入环境变量的shell脚本是安全的,即使它们处理不安全的内容并存储在(不引入的)shell变量里并打开子shell。

和编程语言一样,Bash也有函数,尽管是有限的实现,这些bash函数可能放入环境变量中。这个缺陷在这些环境变量内部的函数定义尾部附加额外的代码时触发。像这样:

$envx='(){:;};echovulnerable'bash-c"echothisisatest"

vulnerable

thisisatest

补丁修复了这个缺陷,确保bash函数的尾部不允许额外的代码。所以如果你用打过补丁的bash版本运行上面这个例子,应该得到类似这样的输出:

$envx='(){:;};echovulnerable'bash-c"echothisisatest"

bash:warning:x:ignoringfunctiondefinitionattempt

bash:errorimportingfunctiondefinitionfor`x'

thisisatest

我们相信这不应该影响任何的向后兼容。它当然会影响使用如上所述创建的环境变量的任何脚本,但这么做会被认为是糟糕的编程实践。

Red Hat的安全问题报告修复了Red Hat企业版Linux的这个问题。Fedora也运送了问题修复包。

关于受影响的特定Red Hat产品的更多信息可以在https://access.redhat.com/site/solutions/1207723找到。

CentOS的信息可以在http://http://www.zjjv.com///pipermail/centos/2014-September/146099.html找到。

本文转自:开源中国社区 [http://http://www.zjjv.com//]

本文标题:Bash 通过特殊环境变量进行代码注入攻击

本文地址:http://http://www.zjjv.com///translate/bash-specially-crafted-environment-variables-code-injection-attack

参与翻译:鑫鑫鑫

英文原文:Bash specially-crafted environment variables code injection attack

时间:2014-09-26 07:51来源:开源中国社区 作者:oschina责任编辑:zhangkai

>>更多交流,请到ChinaUnix【论坛】:http://http://www.zjjv.com///bbs/forum-24-1.html

关键词:

相关文章

网友评论

已有0位网友发表了看法

0 0