bash 中明显存在漏洞(CVE-2014-6271):Bash 特制环境变量代码注入攻击
我试图弄清楚发生了什么,但我不完全确定我理解它。如何echo
在单引号中执行?
$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
vulnerable
this is a test
Run Code Online (Sandbox Code Playgroud)
编辑 1:打补丁的系统如下所示:
$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
this is a test
Run Code Online (Sandbox Code Playgroud)
编辑 2:有一个相关的漏洞/补丁:CVE-2014-7169,它使用了一个稍微不同的测试:
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c …
Run Code Online (Sandbox Code Playgroud) 关于该错误的一些上下文:CVE-2014-6271
Bash 不仅支持将 shell 变量导出,还支持将 shell 函数导出到其他 bash 实例,通过进程环境到(间接)子进程。当前的 bash 版本使用由函数名称命名的环境变量,以及变量值中以“() {”开头的函数定义,以通过环境传播函数定义。该漏洞的出现是因为bash在处理函数定义后没有停止;它会按照函数定义继续解析和执行 shell 命令。例如,环境变量设置
Run Code Online (Sandbox Code Playgroud)VAR=() { ignored; }; /bin/id
将环境导入 bash 进程时执行 /bin/id 。
资料来源:http : //seclists.org/oss-sec/2014/q3/650
该错误是什么时候引入的,完全修复它的补丁是什么?(参见CVE-2014-7169)
除了 CVE(最初)(3.{0..2} 和 4.{0..3})中提到的易受攻击版本之外,还有哪些易受攻击的版本?
有问题的源代码是否在其他项目中重用?
需要额外的信息。
警告 - 这个问题是关于shellshock漏洞之前的 Bash ,因此它被改变了。
我在我的 bash ENV 中看到过这样的事情:
module=() { eval `/usr/bin/modulecmd bash $*` }
Run Code Online (Sandbox Code Playgroud)
这个构造是如何工作的?这叫什么?
我不是在问 modulecmd,我是在问整个结构。