“写笔记”支持四种格式——Word 文档、Excel 表格、Markdown、纯文本,起稿或二次编辑时都能随时切换,同一篇笔记想用哪种形态来记,都由你说了算。
md、txt、csv、json 这类纯文本则原样载入,不做多余加工。拿一张现成的表倒进来、改几笔、再导出去,等于白用一台免费的格式转换器。
要带走就在右上角点“下载”,可导出 PDF、Word、Markdown、Excel、TXT 等格式;列表卡片“⋯”菜单里,也有同样的下载入口。
在“工具”页点“+ 上传工具”即可发布:填好名称与链接,再用 Markdown 把使用方法写清楚——能解决什么问题、怎么装、怎么用,比堆介绍实在。
要分发安装包就一并上传压缩包(ZIP、RAR、7Z、TAR.GZ,最大 35MB),别人在详情页一键下载;只放链接不带附件也可以。
工具按大家的收藏热度排序,好用的自然会被顶上来。发布后可在详情页或卡片菜单里编辑、下架。
写笔记时勾上“隐藏”,这篇就只存在于你自己的账号里:不进列表、不进搜索、不上首页精选,也不会出现在任何公开的页面,链接发给别人同样打不开。
适合放密码、草稿、日记这类只给自己看的内容;想公开,去“发布”打开它,把“隐藏”的勾去掉再保存,之后编辑会默认保持原状态,不会悄悄变回公开。
你的内容会同时保存在多个副本上,系统定期做备份与完整性校验,再配合异地容灾机制:就算某台机器出问题,数据也不会丢,可以长期放心存放;特别重要的资料,仍建议你另外再留一份备份。
全站跑在容器化、模块化的现代架构上,更新、部署、回滚都很快,扩展性和稳定性都按长期运营的标准来设计(Built for reliability, designed to scale)。
这个网站最早只是一个人的笔记仓库,后来慢慢长成现在的知识中枢。设计上很克制——没有广告、没有追踪、没有推荐算法,只是干干净净地存放一些东西;既然做好了,就公开出来,万一有人用得上呢。
不做大而全,不做平台梦,保持简单、保持克制、保持好奇。所有内容都由用户贡献、由用户维护:不会突然冒出付费墙,不会在角落塞广告位,也不会把你的数据卖给第三方。
产品会持续迭代,站内日志页记录着每一次改动,改了什么都有迹可循;想了解这个站是怎么一步步走到今天的,翻翻日志就能看到来龙去脉。
如果在这里看到涉嫌违规的内容,点对应卡片右侧的“举报”按钮就能提交,我们会尽快核实处理;也谢谢你花一点时间,一起把这里维护干净。
新型"Bad Epoll"Linux内核漏洞允许普通用户获取Root权限,波及Android系统
好的,没问题。这篇关于“Bad Epoll”漏洞的文章信息量挺大的,但原文有点像新闻稿,读起来不够过瘾。我把它重新组织一下,加点背景和原理,写成一篇更像技术博主会写的深度笔记,咱们边聊边拆解。
开篇:又一个“Bad”系列?聊聊这个能让普通用户秒变Root的Linux内核漏洞
嘿,兄弟们,最近圈子里又炸了一个Linux内核漏洞,代号“Bad Epoll”,编号CVE-2026-46242。这玩意儿挺狠的,能让一个啥权限都没有的普通用户,直接拿到机器的最高控制权——root权限。而且,它不仅干翻了桌面Linux和服务器,连Android设备也中招了。
你可能觉得“又是内核漏洞,老生常谈了”,但这个还真有点不一样。它属于那种最烦人的“竞态条件”(Race Condition)漏洞,利用起来难度极高,但一旦成功,破坏力惊人。更戏剧性的是,Anthropic公司那个号称“最强”的AI模型Mythos,就在同一小段代码里发现过另一个漏洞,却偏偏漏掉了这个。最后是一位名叫Jaeyoung Chung的研究员手动挖了出来,还搞定了利用方案。
今天咱们就好好掰扯一下这个漏洞到底是怎么回事,它为什么危险,以及它背后反映出的Linux内核安全现状。
一、Epoll是什么?为什么它这么重要?
要理解这个漏洞,得先知道Epoll是个啥。简单说,它是Linux内核提供的一个超级高效的I/O事件通知机制。你可以把它想象成一个“前台接待员”。
假设你写了一个网络服务器,要同时处理成千上万个客户端的连接请求。最笨的办法是,每来一个连接就开一个线程去盯着它,但线程多了系统就扛不住了。或者用select/poll这种老方法,每次都要把所有的文件描述符(就是那些网络连接)列表传给内核,让内核一个一个去检查哪个有动静,效率很低。
Epoll就聪明多了。你只需要告诉内核:“嘿,帮我盯着这10000个文件描述符,哪个有数据可读、可写,或者出错了,你直接告诉我。” 然后你就可以去干别的事。当有事件发生时,内核会主动把“有动静”的那一小撮文件描述符推给你,你只需要处理它们就行了。整个过程是事件驱动的,非常高效。
所以,几乎所有的高性能网络服务器(Nginx, Apache)、事件驱动框架(Node.js, libevent)、以及你的网页浏览器,底层都依赖Epoll。可以说,它是现代Linux系统高性能I/O的基石。正因为如此,你没法简单地把它关掉来“修复”漏洞,因为关掉它,半个互联网都得瘫痪。
二、深入“Bad Epoll”:一场发生在6条指令窗口内的“内存谋杀”
这个漏洞的全称是“释放后使用”(Use-After-Free, UAF)。这词儿听着专业,其实理解起来不难。
想象一下,你有一个共享的记事本(内核内存中的某个对象)。内核里有两个不同的“办事员”(执行路径/线程),它们都需要用到这个记事本。正常情况下,一个办事员用完,会在记事本上写个“已用完,可回收”的标记,然后另一个办事员看到标记,才会把记事本撕掉回收。
但“Bad Epoll”的情况是,这两个办事员几乎同时想处理这个记事本。办事员A刚用完,撕掉(释放)了记事本,但还没来得及更新状态。就在这一瞬间,办事员B也冲过来,它不知道记事本已经被撕了,还傻乎乎地往那堆碎纸片(已释放的内存)上写字(写入数据)。
这就是“释放后使用”:你使用了(写入)一个已经被释放(撕掉)的内存对象。这时候会发生什么?被写入的那块内存可能已经被内核分配给其他进程使用了。你这一写,轻则导致系统崩溃(蓝屏/内核恐慌),重则,如果攻击者精心构造写入的内容,就能篡改内核的关键数据结构,比如修改当前进程的权限标识,把自己从普通用户(uid=1000)直接提升到root用户(uid=0)。
关键点来了:这个漏洞的时间窗口极其狭窄。
原文里说,这两个执行路径冲突的窗口只有“约6条机器指令的宽度”。这是什么概念?在现代CPU动辄几GHz的频率下,6条指令可能就是几纳秒的事。你让一个程序去随机碰撞这个窗口,概率基本等于中彩票头奖。所以,虽然原理听起来简单,但实际利用起来,难度是指数级上升的。
三、Jaeyoung Chung的骚操作:如何让“不可能”变成99%的成功率
Chung的厉害之处,不仅在于他发现了这个微小的窗口,更在于他想出了办法去“敲大”这个窗口,并且实现了一种“无崩溃重试”机制。
扩大攻击面(Expanding the Window): 他没有傻等那个纳秒级的窗口自然出现。他通过精心构造一系列操作,比如发送特定序列的
epoll_ctl和close系统调用,或者利用内存压力、CPU调度等手段,人为地延长了那两个执行路径冲突的时间。这就像在高速公路的一个临时出口,本来只有一辆车能勉强通过,他通过设置路障和引导,让这个出口临时变成了一个可以连续通过好几辆车的“慢速通道”。具体的技术细节在他的公开报告里,核心思路是让内核在释放对象和后续使用之间,插入更多、更耗时的操作,从而让“释放”和“使用”这两个事件在时间上更容易重叠。无崩溃重试(Crash-free Retry): 内核UAF漏洞利用最怕什么?怕失败。一旦你猜错了时机,写入了错误的数据,或者触发了其他保护机制,内核很可能直接崩溃(Kernel Panic),机器就挂了,你的提权大计也泡汤了。Chung设计的利用程序非常巧妙,它能在一次尝试失败后,优雅地恢复状态,然后再次尝试,而不是直接让系统宕机。这意味着他可以在同一台机器上反复尝试,直到撞上那个被放大了的窗口。
最终,他在自己的测试系统上,实现了约99%的root提权成功率。这已经不是运气了,这是艺术。
四、为什么说它特别危险?Android和Chrome沙箱的“克星”
这个漏洞有两个特性,让它比一般的Linux提权漏洞更让人头疼:
可突破Chrome沙箱: 现代浏览器(如Chrome)都采用了沙箱(Sandbox)技术。即使你通过浏览器漏洞执行了恶意代码,这个代码也运行在一个权限极低的沙箱进程里,它无法直接访问系统内核。绝大多数内核提权漏洞都无法从这种沙箱内部触发,因为沙箱限制了很多关键的系统调用。但“Bad Epoll”不同,攻击者可以从Chrome的渲染器沙箱内部,通过调用一些被沙箱允许的、与Epoll相关的系统调用来触发漏洞,从而“逃逸”出沙箱,获得对整台机器的控制权。这对于那些“点一下链接就中招”的攻击场景来说,简直是开了绿灯。
影响Android系统: 很多Linux内核提权漏洞只影响桌面或服务器,因为Android的内核版本、驱动、以及权限模型(如SELinux策略)和标准Linux有差异。但“Bad Epoll”不同,它位于核心的Epoll代码中,这个代码在Android内核里也存在(受影响的内核版本为6.4及以上)。这意味着,如果你的Android手机内核版本够新,攻击者通过一个恶意App,就可能直接获取手机的Root权限,从而为所欲为。目前Chung正在开发针对Android的漏洞利用程序,虽然还没发布,但这已经是一个明确的威胁信号。
五、漏洞溯源:一个补丁引发的“血案” & AI的盲区
这两个漏洞(Bad Epoll 和 Mythos发现的CVE-2026-43074)其实是一对“孪生兄弟”,都源于2023年对Epoll代码的同一次修改。那次修改引入了一个微妙的并发问题,埋下了两颗雷。Mythos(那个AI)拔掉了一颗(CVE-2026-43074),而Chung发现了另一颗(CVE-2026-46242)。
这里有个很有意思的讨论:为什么同一个AI,能发现第一个,却错过了第二个?
Chung提出了两个可能性,我觉得说得挺在理:
- 时间窗口极小,难以想象: 即使你把代码一行行看过去,也很难在脑海中精确模拟出那6条指令宽度的竞态条件。这需要对硬件、内存模型、编译器优化都有很深的理解,当前的AI可能还缺乏这种“直觉”和“想象力”。
- 运行时几乎不留痕迹: 第一个漏洞被修复后,它的“兄弟”Bad Epoll在运行时的错误行为,并不会触发内核的主要错误检测器KASAN(Kernel Address Sanitizer,一种内存错误检测工具)。因为KASAN主要检测的是明显的内存越界或使用已释放内存,而Bad Epoll的触发条件太特殊,KASAN可能根本“看”不到。没有错误报告,AI自然也就无从学习。
这给我们提了个醒:AI在代码审计上确实能帮大忙,但它不是万能的。尤其是在处理这种依赖于极端时间窗口和特定运行时状态的并发漏洞时,人类专家的经验和创造性思维依然是不可替代的。
六、如何修复 & 影响范围
目前上游Linux内核已经提交了修复补丁,commit ID是 a6dc643c6931。所以,解决方案很明确:
- 对于系统管理员/开发者: 尽快更新你的Linux内核。如果你的发行版(如Ubuntu, Debian, Fedora)发布了包含此补丁的内核更新,请立即安装。或者,如果你是自己编译内核,直接cherry-pick这个commit。
- 影响范围: 所有基于Linux内核6.4及以上版本的系统(且未应用修复补丁)都受影响。好消息是,基于旧版6.1内核的系统(包括一些Android手机,如Pixel 8)不受影响,因为这个漏洞是随着6.4版本才引入的。
由于Epoll无法关闭,补丁是唯一的出路。目前没有证据表明该漏洞已在野外被利用,但概念验证(PoC)代码已经存在于Google的kernelCTF项目中,所以留给我们的时间窗口并不宽裕。
七、Linux内核的多事之秋:从“确定性”漏洞到“竞态”漏洞
最近Linux内核的漏洞确实有点多,但我们可以把它们分成两类:
确定性页面缓存写入漏洞(Deterministic Page Cache Write Flaws): 比如今年4月爆出的“Copy Fail”(CVE-2026-31431),以及之前的Dirty Pipe(CVE-2022-0847)、Dirty Frag链、Fragnesia等。这类漏洞的特点是不需要竞态条件。它们是代码逻辑本身有缺陷,只要按照特定的步骤操作,就一定能触发。所以它们利用起来更稳定、更可靠,这也是为什么Copy Fail已经被CISA列入了已知被利用漏洞清单。
竞态条件漏洞(Race Condition Flaws): 比如今天的“Bad Epoll”,以及2016年大名鼎鼎的Dirty Cow(CVE-2016-5195)。这类漏洞历史悠久,原理古老,但因为需要“赢下比赛”,所以利用难度和不确定性都高得多。然而,一旦像Chung这样的大神找到了稳定利用的方法,其破坏力同样惊人。
“Bad Epoll”属于后者。它提醒我们,即使是在AI辅助代码审计的时代,那些古老的、复杂的并发问题依然像幽灵一样潜伏在内核深处。
八、一点思考
这次事件给我几个感触:
- 内核开发的复杂性: 一次看似普通的代码修改,就能埋下两个高危漏洞,其中一个连顶级AI都发现不了。这足以说明内核开发的艰难和对安全审查的极高要求。
- AI的边界: Mythos找到了一个漏洞,这很酷。但它漏掉了另一个,这说明AI目前还无法全面替代人类安全研究员。在需要深度理解并发、硬件行为和状态空间的领域,人类依然有优势。
- 攻防的永恒博弈: 攻击者(Chung)和防御者(内核开发者、AI)都在进步。Chung能构造出99%成功率的利用,说明他对内核的理解已经达到了非常深的层次。而我们作为防御者,除了及时打补丁,更需要从架构和设计层面去思考如何减少这类“竞态条件”漏洞的产生。
好了,关于“Bad Epoll”就聊这么多。希望大家看完这篇文章,不只是知道了一个新漏洞的名字,更能理解它背后的原理、利用的难点以及对我们现实世界的影响。记得尽快去更新你的内核!