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 漏洞利用CVE-2014-6271可以通过 SSH 在网络上被利用。我可以想象这个漏洞是如何通过 Apache/CGI 工作的,但我无法想象这将如何通过 SSH 工作?
有人可以提供一个示例如何利用SSH,以及会对系统造成什么危害?
AFAIU,只有经过身份验证的用户才能通过 SSH 利用此漏洞。这个漏洞对于拥有合法访问系统的人有什么用?我的意思是,这个漏洞没有权限提升(他不能成为 root),所以他只能通过 SSH 合法登录后做更多的事情。
由于此错误影响了如此多的平台,我们可能会从发现此漏洞的过程中了解到一些信息:它是 ?????? (尤里卡)时刻还是安全检查的结果?
由于我们知道 Stéphane 发现了 Shellshock 错误,其他人也可能知道这个过程,我们会对他如何找到这个错误的故事感兴趣。
我们正在运行 Debian Etch、Lenny 和 Squeeze,因为这家商店从未进行过升级;我们有超过 150 个系统运行各种 Debian 版本。鉴于本周的“shell 冲击”,我认为我需要升级 bash。我不知道 Debian 所以我很担心。
apt-get install bash当我的存储库指向 Squeeze 条目时,我是否可以仅在我的所有 Debian 系统上执行并获得正确的 Bash 包。如果没有,我还有什么其他的行动方案?
据我了解,通常让任何人提供将存储在环境变量中的信息被认为是安全的。shellshock 漏洞在这里是一个问题,因为这意味着当 bash 的新实例启动时,环境变量中函数定义末尾的代码将被执行,并且您显然不希望任何人在您的服务器上运行他们喜欢的任何代码. 函数定义本身显然没有安全风险,并且被允许,因为必须显式调用它们才能执行它们的代码。
我的问题是为什么恶意用户不能简单地定义一个函数,将他们的恶意代码包含为一个通用命令ls,然后希望脚本(或正在运行的任何东西)在某个时候使用这个命令?
我想到的一个例子:
$ export ls='() { echo "doing bad things..."; }'
$ bash -c ls
doing bad things...
Run Code Online (Sandbox Code Playgroud) bash 中的shellshock错误通过环境变量起作用。老实说,我对有这样一个功能感到惊讶:
“通过环境变量传递函数定义”
因此,这个问题虽然可能没有完美表述,但要求提供一个示例或案例,其中有必要具有此功能?
奖金。其他 shell zsh、dash 等也有这个功能吗?
我想了解如何在 cygwin 上应用此漏洞的修复程序。
我CYGWIN_NT-6.1 MYHOSTNAME 1.7.30(0.272/5/3) 2014-05-23 10:36 x86_64 Cygwin在 Windows 7 上运行cygwin。
#bash -version
GNU bash, version 4.1.11(2)-release (x86_64-unknown-cygwin)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
vulnerable
this is a test
Run Code Online (Sandbox Code Playgroud)
我试过 apt-cyg 但它没有更新任何东西:
$ apt-cyg update bash
apt-cyg update bash …Run Code Online (Sandbox Code Playgroud) 在阅读了最新的bash漏洞后,我想知道 Tavis Ormandy 的漏洞利用是如何工作的。如何(a)=>\工作?
他发帖说:
bash 补丁对我来说似乎不完整,函数解析仍然很脆弱。例如
Run Code Online (Sandbox Code Playgroud)$ env X='() { (a)=>\' sh -c "echo date"; cat echo
我一直在阅读有关远程 bash 漏洞利用的信息,想知道它有多严重,我是否应该担心,尤其是在补丁发布后发现了一个新漏洞利用。
作为使用 Debian 作为主要桌面操作系统的人,这对我来说意味着什么?有什么我应该注意的吗?