Ubuntu 14.04.1 和 Bash 4.3-7ubuntu1.4 仍然容易受到 Shellshock 攻击 - 下一步该怎么办?

Ubuntu 14.04.1 和 Bash 4.3-7ubuntu1.4 仍然容易受到 Shellshock 攻击 - 下一步该怎么办?

标题说明了一切。

我在 Ubuntu 14.04.1 和 Bash 4.3-7ubuntu1.4 上仍然容易受到攻击(CVE-2014-6271 和可能的 CVE-2014-7169)

  • apt-get update = 无
  • apt-get upgrade = 无
  • apt-get install bind = 无

检查了这个: https://launchpad.net/ubuntu/+source/bash/4.3-7ubuntu1.4(没有更新的版本)

运行测试:

env x='() { :;}; echo vulnerable' bash -c 'echo hello'

得到:

vulnerable
hello

已经这样有一个星期了!

[更新]

我最初从以下位置安装了 bash_4.3.orig.tar.gzhttps://launchpad.net/ubuntu/+source/bash/4.3-7ubuntu1.4这可能是一个错误。

我以前做过这个,sudo apt-get update && sudo apt-get install bash效果会好一些(我认为)。

在这个页面上,还有其他文件,bash_4.3-7ubuntu1.4.debian.tar.gz 和 bash_4.3-7ubuntu1.4.dsc。我不知道该怎么处理它们。我下载了 bash_4.3-7ubuntu1.4.debian.tar.gz 并查看了它,但不知道该怎么处理它。

根据这个测试,我仍然很脆弱:env x='() { :;}; echo vulnerable' bash -c 'echo hello'

我尝试了你能想象到的 apt-get、dpkg 和从 bash_4.3.orig.tar.gz 安装的无数次。测试仍然失败。

我发现:

  • /usr/local/bin/bash - GNU bash,版本 4.3.0(1)-release(i686-pc-linux-gnu)
  • /bin/bash - GNU bash,版本 4.3.11(1)-release(i686-pc-linux-gnu)

今天早上,经过几天的努力,我终于绝望了,我孤注一掷,尝试了以下脚本:如何修补无法升级的过时 Ubuntu 系统上的 shellshock 漏洞?

我现在有:

  • /bin/bash - GNU bash,版本 4.3.27(1)-release(i686-pc-linux-gnu)

测试仍然失败:env x='() { :;}; echo vulnerable' bash -c 'echo hello'当我登录时。所以我sudo /bin/bash又试了一次。仍然失败。

所以我尝试了:

sudo apt-get install --only-upgrade bash

并得到...

Reading package lists... Done
Building dependency tree
Reading state information... Done
bash is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
Need to get 0 B/549 kB of archives.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] y
dpkg: error processing package bash (--configure):
 package is in a very bad inconsistent state; you should
 reinstall it before attempting configuration
Errors were encountered while processing:
 bash
E: Sub-process /usr/bin/dpkg returned an error code (1)

所以我尝试了:

sudo apt-get install bash

并得到...

Reading package lists... Done
Building dependency tree
Reading state information... Done
bash is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
Need to get 0 B/549 kB of archives.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] y
dpkg: error processing package bash (--configure):
 package is in a very bad inconsistent state; you should
 reinstall it before attempting configuration
Errors were encountered while processing:
 bash
E: Sub-process /usr/bin/dpkg returned an error code (1)

这当然并不令我惊讶。

请帮忙。

有人能帮我强制更新 /bin/bash 和 /usr/local/bin/bash 的版本吗?我可以使用此页面上的文件吗https://launchpad.net/ubuntu/+source/bash/4.3-7ubuntu1.4或者我可以清理 GNU 安装吗?还有,如果我能修复一个问题,是否可以将 bash 从 /bin 复制到 /usr/local/bin/(或反过来)?

我需要强有力的 Linux 答案,而不仅仅是随处可见的 apt-get 鹦鹉。我已经阅读了所有或几乎所有我能找到的内容。如果你有资源,请告诉我。你可能已经成功了,但我却遇到了麻烦

进入聊天就可以了。

答案1

Debian 提供原来的上游源代码,然后是控制文件和本地修改。.orig文件名中的 表示它未经修改。.dsc只是元数据。在.debian.tar.gz文件中,您将找到所有补丁,包括安全修复。构建过程采用原始上游,应用补丁并从中构建软件包。Debian(和 Ubuntu)强烈反对从上游引入新版本,因为新版本添加了新的错误和回归,而不仅仅是修复已知问题。

运行sudo apt-get install --reinstall bash应该可以解决这个问题——apt-get 的输出会告诉你没有进行安装,然后继续尝试更新配置。

如果,并且仅有的如果 apt-get 失败,那么您需要:

  1. 确保您已经安装了另一个 shell,这样在删除 bash 时出现故障不会将您锁定在系统之外;安装kshzsh考虑临时将登录 shell 设置为其中一个,这样您就有办法进入。
  2. sudo dpkg --remove --force-remove-reinstreq bash
  3. sudo apt-get install bash

然后,您需要开始熟悉 Unix 使用的手册页系统;命令man是您在这里的朋友, man apt-get并将man dpkg为您提供很多您需要的信息。

答案2

在我看来,问题在于你不小心在 中安装了一个错误的 bash 版本,/usr/local而你已经在 中有一个更好的版本/bin。所以我不明白为什么答案不只是rm /usr/local/bin/bash

好的,这不会删除随之而来的所有支持文件,但它会确保错误的版本无法运行。

make install如果您仍然有执行错误版本的目录,您可以转到那里并执行make uninstall以清理所有内容。如果您没有它……您可能可以解压并再次构建它(确保与./configure您第一次使用的参数匹配)并运行make uninstall

make uninstall应该可以与任何你仍有原始构建目录的 GNU 程序一起使用。它位于编码标准所有 GNU 源码包都必须遵循。

答案3

我发现 Apt-get install bash 可以解决这个错误

答案4

在悬赏金支付之前,请不要对此答案投赞成票(如果您这么做的话)。

我首先要感谢那些帮助过我的人,然后解释发生了什么、不该做什么以及如何解决这个问题。所以请耐心等待。我这样做是为了未来的用户。

感恩:我要谦虚地感谢(!)来自 answers.launchpad.net 的 Paul P(此处)和 Manfred Hampl(m-hampl),并为自己的愚钝道歉。他们俩都帮助我解决了这个问题。我需要一个英雄,他们俩都站出来成为我的英雄。我竭尽全力感谢你们俩。

事实上,我感谢(!)所有参与的人。这一切都很有智慧。特别是 unkilbeeg,他给出了一个非常有价值的线索。当然,我不能忘记 Cyrus,他立即跳了出来,同样非常有价值。

发生了什么:在迷雾笼罩之中,由于我对安装/更新等所有事情都一无所知,我关注了页面、意见和链接,并认为我做的是正确的事情。一开始,apt-get 没有可用的软件包,所以我徘徊在 launchpad.net 上,因为那是 Ubuntu 指向我的地方。

我没有意识到要如何处理 launchpad.net 资源。我安装了基本安装 .gz 文件,希望在某处进行更新。长话短说,我没有意识到另一个页面上有 .deb 文件,而这应该是我的重点。如果您尝试使用 launchpad.net 更新 Ubuntu 中的某些内容,请查找合适的 .deb 文件。

在 apt-get 和 launchpad.net 之间,我最终得到了两个版本的 bash,这使得问题变得非常混乱。

更糟糕的是,有人提议使用 GNU 修复程序,这可能对某些人有用,但却破坏了 /bin 中的 bash。谢天谢地,有两个版本。Paul P 帮助我解决了这个问题,他发出了一个安装命令来覆盖 GNU 安装。

最后:当我在两个网站之间来回切换时,Paul P 和 Manfred Hampl 都走上了同一条道路。不幸的是,我对 Paul P 太过迟钝,对此我深表歉意。

需要知道的是,正如 unkilbeeg 指出的那样,$PATH 很重要。应该存在的唯一版本的 bash(根据我的理解,请记住我很愚钝)是 /bin 中的版本,并且应该拥有的唯一安装是通过 apt-get 获得的版本以及可选的来自 launchpad.net 的任何 deb 文件。Paul P 和 Manfred Hampl 都指出应该删除 /usr/local/bin 版本的 bash。所以我就是这么做的。结果,虽然我以为我正在使用 /usr/bin,因为这是分配给我的用户的,但我实际上使用的是 /local/usr/bin,因为它在我的路径中是第一个。好发现!

请记住这是 Ubuntu 的建议。它可能并不适用于所有人。

如果可以的话,总是(!) 首先使用 apt-get。其次,使用 launchpad.net 并查找正确的 .deb 文件。不要做任何其他事情。虽然 GNU 资源很有价值,但最好让 Ubuntu 为您创建一个包,然后只需等待即可。除非您真的知道自己在做什么,否则不要从其他资源更新 Ubuntu。

赏金:我希望我能给每个人一部分赏金,或者至少在 Paul P 和 Manfred Hampl 之间分配,但这是不可能的。我将 Paul P 标记为已接受的答案,并请他为未来的读者更新他的答案。如果他需要我的信息,我很乐意提供。

再次感谢:再次感谢(!)所有参与的人。简单的参与可能比你想象的更重要。一个简单的线索真的可以帮助陷入困境的人。一个关怀备至的社区的支持。再次感谢

相关内容