一个十七年未修复的 Bug 引起的“口水仗”
ccwgpt 2024-12-25 10:10 99 浏览 0 评论
两个熊孩子,引发了一场“口水”大战。
两个孩子在父亲的电脑上玩耍时,不经意间发现了一种能绕过 Linux 屏保程序并锁定系统的方法。这是个漏洞,可能允许恶意攻击者绕过操作系统的屏保程序及密码,访问本应锁定的桌面。
一位昵称 robo2bobo 的用户在 GitHub 上的 bug 报告写道,“几周之前,孩子们打算访问我的 Linux 桌面。而我就站在他们身后,看着他们到处乱按乱拍。”两个孩子在物理与软键盘上同时按下随机按键,最终导致 Linux Mint 屏保程序崩溃、他们得以直接访问桌面。
这位程序员爸爸很惊讶,于是他让孩子们再试一次,没想到居然成功了,“我本来以为这只是个偶然事件,但孩子们后来又把问题重现了。”
当天晚上,他到 Linux Mint 的 GitHub 页面上反馈了这一 bug。没想到的是,马上就有其他网友表示在同样的桌面环境下,“他的孩子”也遇到了同样的问题…
Linux Mint 首席开发者 Clement Lefebvre 经过一番研究,表示:“这是一个高优先级的错误,需要尽快修复。”
Bug 来源:OSK 上的ē键
最开始,开发人员花了一天多时间,想复现问题,但实际情况并没那么容易:“自昨天以来,我们一直无法在此处重现崩溃。”
根据 Clement 的介绍,问题最终被归因于 libcaribou,即 Linux Mint 中使用的桌面界面 Cinnamon 所随附的软键盘(OSK)组件。具体来讲,当用户按下软键盘上的“ē”键时,此 bug 即会被触发。
在大多数情况下,这个 bug 应该会导致 Cinnamon 桌面进程崩溃;但如果在屏保程序下打开软键盘,则 bug 会引发屏保崩溃,于是用户即可访问底层桌面。
Lefebvre 表示,去年 10 月 Linux Mint 系统曾着手修复 CVE-2020-25712 漏洞,却在不经意间引入了这个新的 bug。从那时起,所有使用 Cinnamon 4.2 以及更高版本的 Linux Mint 发行版都会受到这一绕过攻击的影响。这是因为从 Cinnamon 4.2 起,系统开始将软键盘功能添加至屏保页当中。
程序员大神 JWZ:I TOLD YOU!
关于这个 bug 的讨论,吸引来了杰米·扎温斯基(Jamie Zawinski),对此他专门发表了一篇文章,表示他 17 年前就警告过 Cinnamon 和 GNOME 官方:
“如果没有在 Linux 上运行 XScreenSaver,那么可以你的屏幕就相当于没有锁定。”
出生于 1968 年的杰米·扎温斯基,英文简称为 JWZ,是《黑客帝国》中 MATRIX 矩阵的设计者。
他同时也是 Netscape 浏览器的主要设计者,出生于匹兹堡,中学没有毕业,就已经是一个天才程序员,15 岁开始在卡耐基梅隆大学做 Lisp 研发。90 年代初,他去了加州,加入著名的网景:“早在你听说过 Netscape 之前,我就已经负责开发 Netscape Navigator 1.1 的 UNIX 版本了。”
2004 年,JWZ 首次警告说他遇到了 Linux Mint 的漏洞,之后每隔几年,JWZ 都会遇到此类 bug。每出现一次,就吐槽一次。
- CVE-2019-3010,从 Oracle Solaris 屏幕保护程序可以获得特殊权限升级;
- CVE-2014-1949, MDVSA-2015:162:在 Cinnamon 屏幕保护程序中按菜单键,再按 ESC 键,就可以进入 shell;
- 按住向下键,解锁 Cinnamon 屏幕保护程序;
- 按住回车键,解锁 GNOME 屏幕保护程序。
JWZ 说,早在 17 年前,他甚至还准确提到过这个崩溃 bug,用来解释“如果不按设计思路操作,会发生什么问题”,可是每次 Linux Mint 都回复说“已经修复了”。
JWZ 认为,“糟糕的安全性比没有安全性还差”,因为现在的 Linux 图形化界面根基 X11 存在着不可修复的严重问题:锁定和身份验证是操作系统级别的问题;X11 体系结构的这一错误永远无法修复。
最后还说:“我很关注他们打算如何解决这个问题。”
Linux Mint 还击:你行你上,别 BB!
虽然 Linux Mint 在本周三发布了相关补丁,可以解决此项 bug 并有效预防潜在崩溃,但 JWZ 所说的话,可气坏 Lefebvre 了。
看热闹不嫌事大的网友,之前特地将 JWZ 的博客网址发到了 GitHub 的 bug 报告下,还 at 了相关维护人员。
Lefebvre 在 GitHub 页面上回应 JWZ:“写篇文章大加嘲讽没有任何意义。我建议你把自己的口嗨变成行动… 我希望你能在真正参与工作的 6 个月之后再写封邮件,告诉我们‘这里还有问题,原因是一、二、三……’,或者直接给我们设计出一套又美观易用、又安全稳定的 locker。”
然后逐条反驳了 JWZ 的批评:
早在 2004 年,也就是 17 年前,我已经在文档中解释过自己在 XScreenSaver 中做出的设计权衡。我甚至还准确提到过这个崩溃 bug,用来解释“如果不按设计思路操作,会发生什么问题”。
老哥,要让别人重视你的意见,还是得更务实一点。这就像我 17 年前提醒你“别出门,可能会遇上车祸。”到了真出事的时候,再告诉参加葬礼的朋友们“我早跟他说过了。”问题是,讲这些有意义吗?该出门还得出,该上高速还是得上,生活本来就没那么安全。用户只是想要漂亮的屏保,我们也在努力满足大家的要求。这里要请 JWZ 老兄想想,要在设计中把安全性与丰富性结合起来究竟有多困难。我们早该在设计中考虑这个问题?对,漂亮话谁都会说。重点在于,当时我们的目标是给用户提供漂亮的屏保,哪顾得上那么多?
哪怕是 light-locker 与 KDE 本身,在实际效果上也比 JWZ 的设想更靠谱,至少其在满足安全保障的同时,为用户需求给出了一种解决方案。我们最初发布 light-locker 时,并没发现这类问题。因为当时我们大多使用 gnome-scrensaver 及 mate-screensaver 替代 xscreensaver。换句话说,我们接受了 xscreensaver 存在安全缺陷这个事实,并在发布 light-locker 时几乎忘了这回事。很遗憾,bug 就这么被保留了下来。
而在编写 cinnamon-screensaver 时,本意是用它来替换掉 gnome 屏保程序。很可惜,我们还是没想起修复 bug。毕竟那时候我们连 light-locker 都没考虑进来,更何况是 xscreensaver 呢。于是乎,就引发了这次的问题。
其实这类问题总会出现,反反复复出现。
这就是现实,不管接不接受,这就是现实。JWZ 老哥好像不太明白这一点——你不可能禁止人们做自己想做的事儿,比如出于安全考虑不让他们过马路。哪怕有人总在提醒,除了让他们心烦之外,不会对交通安全有任何帮助。
每次 bug 出现,都回复说“这的确是个 bug,但他们已经修复了”。这是不对的,问题是这不应该是个 bug。真正的原因是系统设计的问题。设计系统安全架构的人,不应该采取让安全失效的方式。这是不合理的。
可以看到,GNOME 团队已经从头开始进行项目重写(我不太清楚他们在重写阶段用了什么设计),我们也有类似的计划。没错,我们犯了前人曾经犯过的错误,最后问题出现给了我们当头一棒。但纠结于过去真的没什么意思,最重要的是怎么避免问题再次出现。我们决定在开发路线图上把欢迎程序和锁定程序区分开来,这一点将在 5.0 版本中有所体现。
极尽嘲讽之能事的博文确实容易吸引眼球,也能让我们意识到问题所在。但我们的关注重点永远应该放在代码本身(不只是 gnome-screensaver 或者其他已经发布的上游代码,而是整个项目中的代码),有了问题就做做审核,项目不就是这么发展完善的吗?
JWZ 虽然提出了问题,但没有给出任何解决方案。就个人来说,我认为无论是在安全层面还是功能层面,light-locker 与 KDE 应该都是目前最好的方案选项。
出于种种原因,这个 bug 会在其他屏保锁定程序中不断出现。编写安全代码其实非常困难,大部分开发者其实根本不做不到。锁定与身份验证都是操作系统层级的问题。X11 架构中的这个问题永远无法修复。我得承认,这些 bug 值得高度重视——因为安全性差比没有安全保障还可怕。
我对以上内容深表赞同。
更让人生气的,在于开发 XScreenSaver 锁屏程序毫无乐趣可言。我一点兴趣也没有,添加这项功能单纯只是为了满足用户需求。
其实大多数朋友都像我一样,都不愿亲自参与安全保护工作。作为开发者,谁不想弄点酷炫的功能出来呢?而安全实际是在束缚自己,一个个查缺补漏,防止恶意人士破坏整个系统。这很重要,但没有乐趣。
唉……
XScreenSaver 是个了不起的项目,帮助用户解决了现实需求。作为其 fork 的 gnome-screensaver 也是一样,多年来始终服务于用户群体。所以虽然曝出一些安全隐患,但项目开发者已经明确解释了他们为什么要做出这样的选择与权衡。所以我觉得没必要抱怨——发现了问题,就解决问题嘛。我们还会更进一步。JWZ 的反馈对我们来说相当于一股反向推进,也更坚定了我们“如非必要,勿增实体”的基本开发理念。
但我还是想对 JWZ 老哥说一句,单靠说漂亮话解决不了实际问题。最好的办法,就是我们携手建立一条最安全的道路。是的,不要抱怨、别总强调什么“我早说过”,加入到代码审计中来、加入到功能开发中来,做个能解决问题的人。
延伸阅读:
https://www.jwz.org/blog/2021/01/i-told-you-so-2021-edition/
https://github.com/linuxmint/cinnamon-screensaver/issues/354
延伸阅读:
事不大侮辱性极强:微软、思科等企业源代码被黑客在线售卖,打包价100万美元-InfoQ
关注我并转发此篇文章,即可获得学习资料~若想了解更多,也可移步InfoQ官网,获取InfoQ最新资讯~
相关推荐
- 自己动手写Android数据库框架_android开发数据库搭建
-
http://blog.csdn.net/feiduclear_up/article/details/50557590推荐理由关于Android数据库操作,由于每次都要自己写数据库操作,每次还得去...
- 谷歌开源大模型评测工具LMEval,打通谷歌、OpenAI、Anthropic
-
智东西编译|金碧辉编辑|程茜智东西5月28日消息,据科技媒体TheDecoder5月26日报道,当天,谷歌正式发布开源大模型评测框架LMEval,支持对GPT-4o、Claude3.7...
- 工信部:着力推动大模型算法、框架等基础性原创性的技术突破
-
工信部新闻发言人今日在发布会上表示,下一步,我们将坚持突出重点领域,大力推动制造业数字化转型,推动人工智能创新应用。主要从以下四个方面着力。一是夯实人工智能技术底座。通过科技创新重大项目,着力推动大模...
- 乒乓反复纠结“框架不稳定”的三个小误区
-
很多球友由于对框架的认知不清晰,往往会把“框架不稳定”当成一种心理负担,从而影响学球进度,其典型状态就是训练中有模有样,一旦进入实战,就像被捆住了手脚。通过训练和学习,结合“基本功打卡群”球友们交流发...
- 前AMD、英特尔显卡架构师Raja再战GPU,号称要全面重构堆栈
-
IT之家8月5日消息,知名GPU架构师拉贾科杜里(RajaKoduri)此前曾先后在AMD和英特尔的显卡部门担任要职。而在今日,由Raja创立的GPU软件与IP初创企...
- 三种必须掌握的嵌入式开发程序架构
-
前言在嵌入式软件开发,包括单片机开发中,软件架构对于开发人员是一个必须认真考虑的问题。软件架构对于系统整体的稳定性和可靠性是非常重要的,一个合适的软件架构不仅结构清晰,并且便于开发。我相...
- 怪不得别人3秒就知道软考案例怎么做能50+
-
软考高级统一合格标准必须三科都达到45分,案例分析也一直是考生头疼的一门,但是掌握到得分点,案例能不能50+还不是你们说了算吗?今天就结合架构案例考点,分享实用的备考攻略~一、吃透考点,搭建知识框架从...
- UML统一建模常用图有哪些,各自的作用是什么?一篇文章彻底讲透
-
10万+爆款解析:9大UML图实战案例,小白也能秒懂!为什么需要UML?UML(统一建模语言)是软件开发的“蓝图”,用图形化语言描述系统结构、行为和交互,让复杂需求一目了然。它能:降低沟通成本避...
- 勒索软件转向云原生架构,直指备份基础设施
-
勒索软件组织和其他网络犯罪分子正越来越多地将目标对准基于云的备份系统,对久已确立的灾难恢复方法构成了挑战。谷歌安全研究人员在一份关于云安全威胁演变的报告中警告称,随着攻击者不断改进数据窃取、身份泄露和...
- ConceptDraw DIAGRAM:释放创意,绘就高效办公新未来
-
在当今数字化时代,可视化工具已成为提升工作效率和激发创意的关键。ConceptDrawDIAGRAM,作为一款世界顶级的商业绘图软件,凭借其强大的功能和用户友好的界面,正逐渐成为众多专业人士的首选绘...
- APP 制作界面设计教程:一步到位_app界面设计模板一套
-
想让APP界面设计高效落地,无需繁琐流程,掌握“框架搭建—细节填充—体验优化”三步法,即可一步到位完成专业级设计。黄金框架搭建是基础。采用“三三制布局”:将屏幕横向三等分,纵向保留三...
- MCP 的工作原理:关键组件_mcp部件
-
以下是MCP架构的关键组件:MCP主机:像ClaudeDesktop、GitHubCopilot或旅行助手这样的AI智能体,它们希望通过MCP协议访问工具、资源等。MCP主机会...
- 软件架构_软件架构师工资一般多少
-
软件架构师自身需要是程序员,并且必须一直坚持做一线程序员。软件架构应该是能力最强的一群程序员,他们通常会在自身承接编程任务的同时,逐渐引导整个团队向一个能够最大化生产力的系统设计方向前进。软件系统的架...
- 不知不觉将手机字体调大!老花眼是因为“老了吗”?
-
现在不管是联系、交友,还是购物,都离不开手机。中老年人使用手机的时间也在逐渐加长,刷抖音、看短视频、发朋友圈……看手机的同时,人们也不得不面对“视力危机”——老花眼,习惯眯眼看、凑近看、瞪眼看,不少人...
- 8000通用汉字学习系列讲座(第046讲)
-
[表声母字]加(续)[从声汉字]伽茄泇迦枷痂袈笳嘉驾架咖贺瘸(计14字)嘉[正音]标准音读jiā。[辨形]上下结构,十四画。会意形声字,从壴从加,加也表声。注:从壴,字义与鼓乐有关;从加,字义与...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- 框架图 (58)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- java日志框架 (61)
- mfc框架 (52)
- abb框架断路器 (48)
- beego框架 (52)
- java框架spring (58)
- grpc框架 (65)
- tornado框架 (48)
- 前端框架bootstrap (54)
- orm框架有哪些 (51)
- 知识框架图 (52)
- ppt框架 (55)
- 框架图模板 (59)
- 内联框架 (52)
- cad怎么画框架 (58)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)