导读:本文讲述的一个女孩子,她并没有刻意去寻找漏洞。她只是在做一件很普通和平常的事情,却意外发现了问题并解决了它。我们需要更多这样的正能量故事。
请大家注意,这并不是 Linux 内核中的一个 bug,而是 Enlightenment 窗口管理器 E16 自 2006 年以来存在的一个老 bug,当时的卡米拉·谢夫奇克(Kamila Szewczyk) 还不到一岁。
而如今的卡米拉已经21岁,她是德国萨尔兰大学的研究生。她每天开着一辆比她大多数同学都老的窗式汽车,光这一点就挺有意思。
但更令人惊讶的是,她使用Linux操作系统,还深入研究了它几十年前的代码库,还发现了一个自 2006 年以来就隐藏在那里的错误,并且修复了它。
Enlightenment 的知名度不如KDE 或 GNOME,甚至连LXDE如今的知名度都更高。但它拥有一小群的忠实用户,在一些小众发行版中也能找到它的身影,例如 Pentoo 或 Bodhi Linux。Bodhi Linux 实际上就使用了 Moksha 作为其默认桌面环境,而 Moksha 正是 Enlightenment 的一个分支。
随着时间的推移,Enlightenment 团队开始使用名为 EFL(Enlightenment Foundation Libraries,启蒙基金会库)的全新模块化框架对项目进行全面重写。这项重写工作耗时十余年,最终于 2012 年 12 月发布,并演变为 E17。E17 从一个简单的窗口管理器发展成为一个功能齐全的桌面环境,具备现代化的合成功能和更完善的硬件支持。
但并非所有人都追赶潮流。一部分社区成员仍坚持使用 E16,继续独立维护和开发它。它现在达到了 1.0 版本里程碑,截至 2024 年,最新版本为 1.0.30。它依然活跃,只是仍低调得多。
而卡米拉同学是那个宁静社区的一员。
她当时并非在查找漏洞,而是在做一件很普通的事:准备她作为研究生教授的课程的讲义幻灯片。她有几个用 LaTeX 排版的 PDF 文件,用 Atril(一款文档查看器)打开其中的一个时,整个电脑桌面死机了。
这并非偶然故障。
系统的卡顿现象多次复现,这既令人沮丧,又让开发者感到一丝兴奋。可复现的 bug 意味着你可以真正追踪到问题的根源。
于是她开始着手调查。
0 __strcmp_evex ()1 __imlib_hash_find (hash=0x55bc9c111420, key="\001\001\001\001\001") object.c:1722 __imlib_font_cache_glyph_get (fn=..., index=0) font_draw.c:303 __imlib_font_get_next_glyph (... utf8="Kickoff.pdf — Introduction...") font_main.c:2184 __imlib_font_query_advance (...) font_query.c:895 imlib_get_text_advance (...) api_text.c:2316 Efont_extents (...) text_ift.c:877 _ift_TextSize (...) text_ift.c:1568 TextstateTextFitMB (ts=..., textwidth_limit=291) text.c:3509 TextstateTextFit (...) text.c:55910 TextstateTextDraw (... text="Kickoff.pdf — Introduction...") text.c:63811 ITApply (...) iclass.c:93012 ITApply (...) iclass.c:88413 _BorderWinpartITclassApply (ewin=..., i=2, force=1) borders.c:17914 EwinBorderUpdateInfo (ewin=...) borders.c:30015 EwinChangesProcess (...) ewins.c:214116 EwinEventPropertyNotify (ewin=..., ev=...) ewins.c:1438...21 main (...) main.c:320
她从源代码中发现,当窗口标题过长需要截断时,负责截断的算法没有迭代次数限制。因此,它会无限循环,最终导致桌面完全卡死。这个漏洞自 2006 年以来就一直潜伏在那里,可能只是在等待某种特定的条件触发。
表面上看,这只是一个关于一款鲜为人知的窗口管理器的冷门故事,大多数Linux用户大概一生也不会接触它。但请仔细观察,你会发现它远不止于此。
卡米拉出生于2004年。她修复的那个漏洞在她一两岁时就已经存在。她长大成人后,上了大学,成为了一名研究生以及一名教师,而那个漏洞却一直静静地躺在由少数爱好者维护的代码库中,无人问津。最终,是一位真正将E16作为日常用车的用户偶然发现了它,并出于责任心将其修复。
其实这才是真正的开源精神。
它不涉及大公司、赏金计划或 CVE 漏洞申报,而仅仅是一个人、一台电脑、一个死机的桌面,以及想要弄明白原因的好奇心。
有些人已经维护这个代码库几十年了,有很多用户至今仍在使用它。而且,时不时地,这些用户中会有人发现一些其他人没注意到的问题,默默地改进软件,然后继续他们一天的工作。
这不是一件小事,这才是开源的关键精神所在。
作者:场长
参考:
https://iczelia.net/posts/e16-20-year-old-bug
https://www.theregister.com/2026/04/15/enlightenment_e16_bug_patched
本篇文章为 @ 场长 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 微信公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。
请扫描二维码,使用微信支付哦。