是否有人独立审查过 Speed 47 的 shell 脚本 (spectre-meltdown-checker.sh),用于检查 Meltdown 和 Spectre 补丁?

是否有人独立审查过 Speed 47 的 shell 脚本 (spectre-meltdown-checker.sh),用于检查 Meltdown 和 Spectre 补丁?

有一段代码用于检查你的内核是否已经针对 Spectre 和 Meltdown 进行了修补。它位于: https://github.com/speed47/spectre-meltdown-checker

其他评论员已经谈到了该方法的局限性,但我发现没有人谈论以 root 身份运行是否安全。

有人可以评估一下这个脚本的安全性吗?

除了检查这些漏洞之外,它还会做其他事情吗,比如更改系统配置或进行任何可以在重启后继续存在的更改?

谢谢

答案1

该脚本实际上正在检查内核中针对这三个漏洞的缓解措施。到目前为止,LTS 系统和 Ubuntu 17.10 都有针对 Meltdown 漏洞的可用缓解措施。

有一个 C 程序可以确定 Spectre 漏洞之一。您可以使用以下程序检查您的处理器是否存在漏洞:

wget https://gist.githubusercontent.com/ErikAugust/724d4a969fb2c6ae1bbd7b2a9e3d4bb6/raw/41bf9bd0e7577fe3d7b822bbae1fec2e818dcdd6/spectre.c

gcc spectre.c -o spectre -std=c99 -w -O0

./spectre

如果您看到以下行:

Reading at malicious_x = 0xffffffffffdfebb8... Success: 0x54=’T’ score=7

那么你的处理器就很容易受到 Spectre 分支预测的攻击。

我已经亲自测试过 Intel Atom 1st gen、Core 2 Duo E8400、Core 2 Duo 4300 不存在该漏洞,但运行该程序后 Core i5 3230M、AMD Turion TL-56 存在该漏洞。

答案2

首先,从项目的 github 页面中了解一些事实。在撰写本文时,它有 48 位贡献者和 355 个分支。贡献者可能是只看过部分脚本并修改了他们感兴趣的部分的人,但更有可能的是,他们可能已经通读了整个脚本并做出了代码贡献。所以这已经是相当高的审查水平了。还有 355 个分支,但看看你所要做的就是点击一个按钮来创建一个分支,你就能明白你想要什么了。

其次,永远不要依赖 Virus Total 来检查脚本或源代码。也许有一天,人工智能会被用来读取脚本/源代码以检查是否存在恶意内容,但目前还没有人真正找到自动验证它们的方法。防病毒软件会寻找二进制签名,有时可能会使用启发式方法来分析二进制文件。如果你给防病毒软件一个源代码或脚本,它会将其解释为文本文件并告诉你它是干净的(产生一种虚假的安全感)。

最后,我刚刚读完了全部 4500 行内容,没有发现任何让我担心的地方。

坦白说,我只认为自己是一个中级 Bash 脚本编写者,而这是一个相当高级的脚本,我可能会在未来几年里不断从中吸取技巧和窍门。虽然我能够跟上它的步伐,但我可能会错过一些东西,因为里面发生了很多事情。

它的大部分操作涉及读取内核、cpuid、内核配置、fs(与补丁和内核信息相关的部分,它的工作需要这些部分)和 cpu 的 msr。它会在临时文件夹中进行一些写入、提取、转储和反编译,并在退出清理时删除。它唯一使用互联网的时候是使用 wget 从它的 github 页面下载 MCExtractor 数据库。它不会尝试以任何方式拨号回家。

在阅读时,我只发现两点值得注意:第一,它对 CPU 的型号特定寄存器 (msr) 进行了两次写入(其中存储了 CPU 设置等)。一开始这很令人担忧,但我已经使用以下方法验证了这些写入英特尔发布的指导方针并且写入符合其推荐的参数。

第二件需要注意的事情是,该脚本需要从一个名为 MCExtractor 的项目下载 SQLite3 数据库。我不了解 MCExtractor 项目,也没有看过它的源代码。由于不想为了运行这个脚本而审查另一个项目,我在网上搜索了一下,看看从未知来源访问 sqlite3 dbs 是否存在任何危险。确实存在可以使用 sqlite3 进行攻击,名为 Magellan但它似乎更多地与 sqlite3 的查询代码执行方面有关,而不是数据库方面。我个人对此并不太担心,但我想指出这种可能性,让你自己决定。该漏洞已从 SQL 3.26 中修补,但尚未出现在 Ubuntu Bionic 或 Cosmic 存储库中。如果您对此感到担心,可以直接从下载 3.26 libsqlite3 版本http://us.archive.ubuntu.com/ubuntu/pool/main/s/sqlite3/作为 deb 文件并使用 进行安装sudo dpkg -i name-of-deb-here.deb。我建议在之后立即降级(再次使用来自同一位置的 deb 文件),因为 3.26 目前在变更日志中被归类为不稳定。

此信息涉及项目的提交 d7d2e69,你可以在这个链接中找到

该脚本制作于 2018 年 12 月 11 日,该版本脚本的 sha256sum 为:b0f884be51f0eb49ed61854f0e011a2f89f44c35699e07a705b0ec6f98fa29b5

你可能使用 github 的

相关内容