什么是bash?如何手动升级你Mac OS上的bash?
发布时间:2022-05-16 00:04:41
什么是bash?相信很多果粉们都不太清楚吧,其实它是应用于大多数基于Linux或Unix操作系统的命令行程序,其中包括有Mac OS,他们可以使用你的文件,获取你的私密信息,删除数据,运行程序等等。那么如何手动升级Mac OS上的bash?下面小编就为详细介绍一下
什么是bash?相信很多果粉们都不太清楚吧,其实它是应用于大多数基于Linux或Unix操作系统的命令行程序,其中包括有Mac OS,他们可以使用你的文件,获取你的私密信息,删除数据,运行程序等等。那么如何手动升级Mac OS上的bash?下面小编就为详细介绍一下!
心脏滴血(Heartbleed)一波才平,一波又起,这次的漏洞名为Shellshock(最初的官方名叫做CVE-2014-6271),受害者则是搭载了Linux和Mac的电脑。现在它已经在NCAS分级为10的危险评级中成功拿下了危险性为10的评定。虽然现在也有了一些专用于修复漏洞的更新,但是它们依旧不够完善,而你的电脑也仍然处于威胁之中。而这个bug已经像这样存在了20年才为人知晓。
2014.9.26更新说明
一个新补丁主要用于应对新增的攻击方式CVE-2014-7169.
如果你在太平洋夏令时的2014年9月26日下午三点前照着这篇教程做过,那你需要删除掉你的bash-fix文件夹(你可以通过finder在你的user->username目录下找到它),之后再照着下面的教程再做一次(从第一步开始),这样才能确保你的电脑得到完全的修复。如果你从来没有手动更新过,那就不需要删除bash-fix文件夹。
该教程现已经能完全应对现有的攻击,也很可能是你需要部署的最后一次补丁了。
什么是bash
bash是应用于大多数基于Linux或Unix操作系统的命令行程序,其中包括有Mac OS。如果你的操作系统的默认命令行shell是bash的话,它就可能被网络上远端的黑客用于攻击你的电脑。通过一个小小的脚本黑客便可以在你的电脑上加载程序或者更改特性,这些操作既不需要任何密码,也不需要了解任何你所知道的东西。他们可以使用你的文件,获取你的私密信息,删除数据,运行程序等等。
危险性测试第一步:
打开终端窗口,在shell中键入以下命令行,紧接着输入回车。终端可以在你电脑的应用文件夹的Utilities中可找到,你也可以使用快速搜索找到它。
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
好结果是这样的
如果你的电脑不存在被Shellshock漏洞威胁的隐患,那么终端的输出结果应该和下面的这一段差不多:
bash: warning: x: ignoring function definition attemptbash: error importing function definition for `x'this is a test
糟糕的结果
如果你的电脑存在被威胁的可能,那你看到的结果将会是下面这样:
vulnerable this a test
危险性测试第二步:
如果你通过了第一个测试,那么试试下面的测试看看你的电脑能否抵御一种在星期四才被发现的新型攻击方式;
env X='(){(a)=>\' bash -c "echo date"; cat echo; rm -f echo
好结果又是这样的
如果你的电脑没有任何问题,那你应该会看到如下这样的输出(不输出任何与当前日期有关的内容):
datecat: echo: No such file or directory
坏结果是这样的
如果你的电脑在劫难逃,那你会看的输出就是下面这种形式:
date
如图所示(下面输出的是我测试的时间):
那么现在有更新了吗
大多数Linux发行版已经有了专为Shellshock开发的补丁(虽然大多并不完整),不过Mac OS X用户至今还是没有收到任何消息,苹果对此事只字未提。最近Mavericks的更新10.9.5版本也没有对Shellshock有任何的修复。
如果你感到惶恐不安,这里倒是有一个手动更新的方法让你机器上的GNU bash升级到更为安全的那个版本,在这里要感谢StackExchange的用户提供了有关方法。
在你的Mac电脑上打开终端窗口,输入以下命令来查看你已经装上的shell版本(记得最后敲回车)。
bash --version
如果你的GNU bash版本号为3.2.51(1)-release, 那你需要升级到3.2版本的最新版3.2.53,如果你已经照着这篇教程升级到过3.2.52(1)-release,那你需要照着下面的做完以确保更新到最新版本使你的电脑得到完全的保护。
bash除此外还有其它更新的版本,不过Mac OS只支持3.2分支。如果你是Linux用户,你想要确保下载到与你当前使用的bash版本相匹配的补丁。那你可以在这里找到各种主要版本的最近更新,包括3.0, 3.1, 3.2, 4.0, 4.1, 4.2, 和4.3。
你可以根据以下教程手动编译bash的最新版本(3.2.53),但是首先你需要在你的电脑上安装有一个苹果的Xcode工具。如果你没有安装过这个工具,那你需要照着下面的准备工作章节做下去。
如果你不想升级bash,这里有个由红帽提供的解决方案,不过它还并没有通过完整的测试,因此我并不推荐这个。
准备工作
你需要确保你已经装上了Xcode,并同意了苹果的条款,在老一些的Mac上,你还要确保你装上了命令行工具。
你也可以在Mac App Store上下载到免费的Xcode。
如果你的Mac OS X版本太老而不能在Mac App Store上下载到可用的Xcode,你可以使用你的Apple ID登录开发者中心去搜索一个合适的版本并下载。如果你是Mac OS10.7或者10.8用户,那么请在开发者下载页面的左边的搜索框里搜索Xcode 4.6.3.
在你装了Xcode之后,在你的应用文件夹内找到并运行它,之后同意相关条款。最开始加载的时候可能会花费一些时间。之后你需要确认是否有可用而完整的命令行工具,做法如下:
打开Xcode,在顶部的菜单栏里打开菜单。
点击选项。
点击下载标签。
在下载列表里面找到命令行工具之后点击下载。
提示:如果你没有看到命令行工具选项那就证明你已经装上了。
做完之后,你就为系统补丁做好了所有准备工作了。
第一步:下载并编译补丁
当你确定装上了Xcode,再次打开终端命令行并输入一下命令,然后回车。每一行是一个命令,因此一定要整行复制。
mkdir bash-fixcd bash-fixcurl https://opensource.apple.com/tarballs/bash/bash-92.tar.gz | tar zxf -cd bash-92/bash-3.2curl https://ftp.gnu.org/pub/gnu/bash/bash-3.2-patches/bash32-052 | patch -p0cd ..xcodebuild
进程会跑上一段时间,你会看到在终端里一大串输出,那是因为Xcode正在你的电脑上编译新的bash。等它运行完毕,输出“BUILD SUCCEEDED”之后你会看到一个新的终端窗口。
第二步:下载编译并建造第二个补丁
这一步添加于太平洋夏令时2014.9.26 3:00pm,该补丁主要针对于新的攻击方式。如果想了解更多请看文章开头的更新说明。
mv build/bash.build/Release/bash.build/DerivedSources/y.tab.* bash-3.2/cd bash-3.2curl https://ftp.gnu.org/pub/gnu/bash/bash-3.2-patches/bash32-053 | patch -p0cd ..xcodebuild
再一次,你会在完成的时候看到“BUILD SUCCEEDED”。
第三步:备份你当前版本(建议)
为避免发生某些错误,备份你当前使用的bash版本是个不错的选择,你可以在终端输入以下两行命令。
注意在这一步你很可能被提示需要输入一个密码,这个密码就是你用于登录Mac的那个密码。当你敲击的时候并不会在终端看到回显,如果你的密码过于复杂的话在提示密码错误的情况下你可以试试多输入几次。
sudo cp /bin/bash /bin/bash.oldsudo cp /bin/sh /bin/sh.old
你不会看到任何确认信息,但是它已经备份完了,如果在第五步之后发生了错误的话。你还可以用复制命令找回你以前的老版本bash,将“.old”复制为原始文件(即没有".old"部分)。
第四步:确认你新建的版本信息
在终端里输入以下命令以确认你在电脑上新建的bash是最新版本:
build/Release/bash --versionbuild/Release/sh --version
输出的文本应该是bash版本为3.2.53(1)-release你才可以确认你编译了正确的版本。
第五步:使用新版本替换你老版的bash
全部做完之后。你只需复制你新版的bash覆盖掉老版的bash,使用以下命令完成:
sudo cp build/Release/bash /binsudo cp build/Release/sh /bin
现在,再来测试一下看看电脑是否还是会输出那个好结果:
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
然后来进行第二测试:
env X='(){(a)=>\' bash -c "echo date"; cat echo; rm -f echo
如果日期依旧显示,那么检查一下你的home文件夹下是否有一个名为echo的文件在你测试的时候被创建。如果是的,那么删除它再试一次。如果这样还是依旧输出日期,那么很可能是你遗漏了上面刚刚更新的第二步。如果你认为你在所有的命令行中没有任何输入错误,你也可以删掉你的bash-fix文件夹之后从第一步开始重来。如果没有什么问题也请删除bash-fix文件夹——因为那只是个临时目录而已。


猜你喜欢
- 很多小伙伴打印文档的时候,文档发送到打印机后,打印机没有动静,查看到打印机还是亮着灯,但打印机竟然一些反应都没有,电脑上也没有像以前一个文档
- 有已经使用上Win10系统的朋友询问,在Win10系统上怎么删掉多余无用的无线网络连接呢?这个估计是强迫症患者的需求吧,不管怎样,我们来看看
- 在使用电脑的时候,我们的电脑会自动检测主机箱后面和前面的设备并进行播放,但是有些用户们想要将播放切换到hdmi模式,单独使用一个进行播放,这
- 猎豹浏览器是一款功能强大的浏览器,有非常多的用户喜欢使用猎豹浏览器,包括小编也非常喜欢,不过俗话说的好,萝卜青菜各有所爱,有些不喜欢用猎豹浏
- win8.1操作系统用户经常遇到网络掉线,无法上网的问题,也不知道怎么回事?这篇文章就告诉大家win8.1系统是如何更新无线网卡驱动解决掉线
- 有哪些实用的 iOS 12「捷径」可以分享直接添加使用。「捷径」虽然非常方便,但是制作生成一个实用捷径却非常困难,不过好在我们可以为大家分享
- 喜欢个性化的用户就喜欢给自己的电脑换一个自己喜欢的主题,这样使用电脑的时候既不会枯燥也让人心情很好。相信大部分人都会换壁纸,那么你知道鼠标的
- 最近有用户想知道office2010与office2016哪个好用?这两个版本之间的差别、改进都不是很大。只是新的版本依旧是在界面上还有小功
- 为了使wps文档能够跨设备正常显示,我们需要将字体嵌入到wps文字中,具体的操作是怎样的呢?下面就让小编告诉大家wps文字怎样嵌入字体。wp
- 通常电脑刚买来的时候时间就已经自动调准确,很少会出现时间不准的情况。但最近有Win7系统用户反映,其电脑显示的时间不准确,不知道要如何重新设
- Clipchamp是一款微软为Win11系统推出的视频剪辑软件,该软件支持修剪、拆分、过渡,甚至还具有屏幕录像机功能。本期教程小编将为大家介
- 在玩游戏的时候,经常会弹出一些通知提醒,影响用户的游戏体验。其实我们可以设置关闭通知提醒,那Win11要如何关闭通知提醒呢?下面小编就给大家
- 最近有用户在使用Win10电脑的过程中,反映自己的电脑无法识别USB设备,无论插入U盘还是硬盘都没有响应,这是怎么回事?下面小编就给大家分享
- 全民小视频怎么绑定银行卡?想着的短视频app有很多,全民小视频就是其中的一款。全民小视频中可以赚取收益,想要进行提现,首先要将其绑定银行卡,
- 面对复杂的工资表,一条一条的制作既浪费时间又浪费精力,还容易出错。如何简单快捷的制作工资条呢?接下来小编教大家使用wps表格快速的制作工资条
- win11右键怎么直接打开所有选项?我们都能知道win11系统的右键菜单发生了很大变化,不少功能需要在more options才可以找到非常
- 一般删除文件后,需要在回收站中再次将它彻底删除,提高电脑使用效率的方法就是快速删除,下面有个不错方法,大家不妨一试我们一般删除文件后,需要在
- excel单倍行距怎么设置?在excel中,用户可以通过设置单倍行距来让整个表格显得更跪安,那具体要在哪里设置呢?一起来看下小编分享的详细步
- 众所周知,在电脑的右下角会显示日期时间,这是系统自带的,当然如果是自己安装的日历软件,同样也会在电脑右下角显示日期时间,比如人生日历。不过,
- 我们在写论文的时候,一般都需要为参考文献添加上标,那么,如何在wps文字中为参考文献添加上标呢?下面就让小编告诉你如何在wps中为参考文献添