LFZ 的技术笔记

作者: lfz

  • 🔥 一个!符号让攻击者获得 root 权限 — CVE-2026-23111 Linux 内核漏洞深度解析

    🔥 一个!符号让攻击者获得 root 权限 — CVE-2026-23111 Linux 内核漏洞深度解析

    2026 年 6 月,安全研究人员披露了一个令人瞠目结舌的 Linux 内核漏洞:代码中一个多余的感叹号”!”,让任意普通用户可以直接提权到 root。更震撼的是,PoC 现已公开,稳定率超过 99%。本文将深入分析 CVE-2026-23111 的技术细节与应急方案。


    🔍 漏洞概览

    CVE-2026-23111 位于 Linux 内核的 nf_tables 子系统——这是现代 Linux 的包过滤框架,替代了传统的 iptables。漏洞类型为 Use-After-Free(UAF),CVSS 评分 7.8(High)

    • CVE 编号:CVE-2026-23111
    • 漏洞类型:Use-After-Free(释放后使用)→ 本地权限提升
    • 影响组件:Linux kernel nf_tables 包过滤子系统
    • 攻击前提:需要本地普通用户权限 + unprivileged user namespaces(默认开启)
    • 影响范围:Ubuntu 22.04/24.04/25.10、Debian Bookworm/Trixie、RHEL 10、SUSE、Amazon Linux 等主流发行版

    ⚙️ 技术根因:一个感叹号引发的”血案”

    漏洞函数是 nft_map_catchall_activate(),它在 nf_tables 事务回滚阶段(Abort Phase)负责重新激活 catchall 元素。问题出在一行代码的逻辑取反上:

    /* ❌ 错误的代码 - nft_map_catchall_activate() */
    if (!nft_set_elem_active(ext, genmask))
        continue;  /* 跳过非活跃的,处理活跃的 → 刚好反了!*/
    
    /* ✅ 修复后的代码 - 删掉那个 "!" */
    if (nft_set_elem_active(ext, genmask))
        continue;  /* 跳过活跃的,只处理非活跃的 → 正确!*/

    这个反逻辑导致了什么后果?当一条 nft 事务(比如删除一个规则集)失败触发回滚时:

    1. 引用计数不增反减:本该增加的 chain->use 引用计数未被正确恢复
    2. 每次回滚都扣一次:每触发一次 abort 周期,引用计数就永久减少 1
    3. 引用计数归零:当 chain->use 变为 0 时,DELCHAIN 操作可以成功删除这个 chain
    4. 释放后使用:chain 虽已被释放,但 catchall verdict 元素仍然指向它——UAF 条件达成

    攻击者随后通过 seq_operations spray、msg_msg 堆风水等经典内核利用技术,完成内核基址泄露 → 堆地址泄露 → ROP 链执行 → 禁用 SELinux → 替换 modprobe_path → 提权到 root 的完整攻击链。


    🎯 攻击场景:不止是本地提权

    虽然漏洞需要本地访问权限,但在以下场景中威胁尤为严峻:

    • 共享主机 / 跳板机 / CI 构建服务器:任意有 shell 的用户 → 直接 root
    • Kubernetes 容器逃逸:攻击者从被攻陷的 pod 内部突破到宿主机
    • 云 VM 横向移动:获得低权限账户后迅速提权控制整台实例

    据 Exodus Intelligence 的测试,该漏洞在空闲系统上的利用稳定率超过 99%——内核常见的 KASLR、SMEP/SMAP 等防护机制均被绕过。


    🛡️ 检测你的系统是否受影响

    立刻检查当前内核版本:

    # 查看内核版本和构建日期
    uname -r    # 如 6.8.0-50-generic
    uname -v    # 编译日期信息
    
    # 检查 nf_tables 模块是否加载
    lsmod | grep nf_tables
    
    # 检查 unprivileged user namespaces 是否启用(默认开启)
    sysctl kernel.unprivileged_userns_clone
    # 返回 1 表示开启

    各发行版已修复版本参考

    • Ubuntu:22.04 LTS → 5.15.0-134+ / 24.04 LTS → 6.8.0-52+
    • Debian:Bookworm → 6.1.129+ / Trixie → 6.12.20+
    • RHEL 10:kernel-10.0.0-55+
    • 上游主线:6.14+ 已包含修复(2026 年 2 月 5 日合入)

    更新后必须重启系统,内核热补丁需要重启才能生效:

    # Ubuntu/Debian
    sudo apt update && sudo apt upgrade linux-image-$(uname -r)
    sudo reboot
    
    # RHEL/CentOS
    sudo yum update kernel && sudo reboot

    🔒 无法立即更新?试试缓解措施

    如果因为业务连续性无法立刻重启,可以通过限制 user namespaces 阻断攻击路径:

    # 临时禁用 unprivileged user namespaces(立即生效)
    sudo sysctl -w kernel.unprivileged_userns_clone=0
    
    # 写入 sysctl 配置使其持久化
    echo "kernel.unprivileged_userns_clone=0" | sudo tee /etc/sysctl.d/99-disable-userns.conf
    
    # 注意:Docker/Podman 容器需要该特性,禁用后容器可能无法正常运行

    替代方案:如果必须保留容器能力,可以使用 apparmorseccomp 策略限制 nf_tables 的调用,但有效性不如直接修补内核。


    ⏱️ 时间线回顾

    • 2026 年 2 月 5 日:上游内核合入修复补丁(删掉一个”!”)
    • 2026 年 4 月 16 日:FuzzingLabs 发布独立 PoC
    • 2026 年 6 月 8 日:Exodus Intelligence 发布完整技术分析
    • 2026 年 6 月 10 日:Ars Technica / The Hacker News 等媒体报道,引起广泛关注

    💡 快速参考

    操作命令
    检查内核版本uname -r && uname -v
    检查 nf_tables 模块lsmod | grep nf_tables
    检查 user namespace 状态sysctl kernel.unprivileged_userns_clone
    临时禁用提权路径sudo sysctl -w kernel.unprivileged_userns_clone=0
    Ubuntu 更新内核sudo apt update && sudo apt upgrade linux-image-$(uname -r)
    Debian 更新内核sudo apt update && sudo apt upgrade linux-image-$(uname -r)
    RHEL 更新内核sudo yum update kernel
    查看 CVE 详情https://nvd.nist.gov/vuln/detail/CVE-2026-23111

    📝 结语

    CVE-2026-23111 再次印证了“差之毫厘,谬以千里”——一个字符的错误让 Linux 内核的防御体系形同虚设。所幸上游修复已在 2 月合入,所有主流发行版也已跟进。建议所有运维人员立即检查内核版本并安排重启。安全无小事,更何况只是一个”!”的距离。

    参考来源Ars Technica | The Hacker News | FuzzingLabs

  • 🔥 WWDC 2026 深度解读:Siri AI 时代到来,开发者如何迁移到 App Intents?

    🔥 WWDC 2026 深度解读:Siri AI 时代到来,开发者如何迁移到 App Intents?

    WWDC 2026 上,Apple 正式发布了由 Google Gemini 1.2T 模型驱动的全新 Siri AI,同时宣布弃用运行了十年的 SiriKit,强制开发者迁移到 App Intents 框架。这是自 2016 年 SiriKit 推出以来最大的一次架构变革。本文为开发者解读技术细节,并提供可操作的迁移指南。


    🔥 Siri AI 的技术架构

    新的 Siri AI 采用混合处理架构:简单请求在设备端由 Apple Foundation Models 处理,复杂查询则路由到 Google Cloud 上的 Nvidia Blackwell B200 GPU 运行 Gemini 模型。

    • 设备端:Apple 自研 Foundation Models,处理本地语音/文本指令
    • 云端:1.2T 参数 Gemini 专版,支持多步推理、跨设备对话历史、图片/文档附件
    • 隐私保护:Nvidia 硬件级机密计算加密,Apple 合同禁止 Google 用 Siri 数据训练模型
    • 成本:小开发者可免费使用 Private Cloud Compute(App Store Small Business Program 成员且应用首次下载<200万)

    对开发者来说,最核心的变化是:Siri 不再是”我说你听”的单轮问答,而是支持多轮对话、跨 App 链式操作的智能代理


    ⚠️ 关键变化:SiriKit 退役,App Intents 成为唯一入口

    这是本次 WWDC 对开发者影响最大的决策。

    Apple 给了 2-3 年迁移窗口期,但最终所有 Siri 交互必须通过 App Intents。未迁移的应用在 Siri AI 中将”功能不可见”——Siri 无法发现和调用它们的任何能力。

    SiriKit vs App Intents 对比

    维度SiriKit(已弃用)App Intents(强制迁移)
    定义方式XML Intent 定义文件纯 Swift,编译器生成元数据
    处理流程独立的 Intent Extension 进程直接向 App 发起 perform 请求
    发现机制有限的固定 Intent 域OS 读取元数据,无需启动 App
    对话能力单轮,以 Siri 卡片结束流式多轮,支持后续追问
    跨 App 链式不支持Siri AI 可自动编排多个 App Intent

    💻 App Intents 代码实战

    以下是一个最小可用的 App Intent 示例——让 Siri AI 能发现并执行”记录健身”操作:

    // 导入 App Intents 框架
    import AppIntents
    
    // 定义一个 Siri AI 可自动发现的动作
    struct LogWorkoutIntent: AppIntent {
        // 意图标题(Siri 用它匹配用户自然语言)
        static let title: LocalizedStringResource = "记录健身"
    
        // 参数:活动类型
        @Parameter(title: "活动类型")
        var activity: String
    
        // 参数:持续时间(分钟)
        @Parameter(title: "时长(分钟)")
        var minutes: Int
    
        // 执行逻辑
        func perform() async throws -> some IntentResult & ProvidesDialog {
            // 调用你的业务逻辑
            try await WorkoutStore.shared.log(activity, minutes: minutes)
            // 返回对话式反馈给 Siri
            return .result(dialog: "已记录 \(minutes) 分钟 \(activity)")
        }
    }

    关键要点:

    • 使用 @Parameter 声明参数,Siri AI 会自动提取用户话语中的信息填充
    • 返回 ProvidesDialog 可实现对话式回复,支持多轮交互
    • 所有 Intent 必须在 Info.plist 中注册(Xcode 27 支持自动发现)

    🧠 Foundation Models Framework:直接调用 Apple Intelligence

    WWDC 26 新引入的 Foundation Models Framework 让开发者可以直接在 App 中调用 Apple 的设备端和云端 AI 模型——不仅是 Siri 功能,而是任何 AI 场景。

    import FoundationModels
    
    // 创建模型实例(设备端优先,自动降级到云端)
    let model = try await LLM.shared.createModel()
    
    // 多模态提示——传图片+文字
    let response = try await model.generate(
        prompt: .text("描述这张图片中的场景"),
        attachments: [.image(screenshot)]
    )
    print(response.text)

    该框架还提供了 fm CLI 命令行工具和 Python SDK,可以在构建脚本或 CI 流程中调用 Apple AI。配合新的 Evaluations 框架,可以编写自动化测试来验证 AI 功能的正确性。


    ⚙️ Xcode 27:设备端 AI 编程助手

    Xcode 27 内置了 Apple Intelligence 驱动的代码补全,支持预测性多行补全,全部在设备端 Apple Silicon 上运行,不泄露代码。同时开放第三方模型接口——开发者可以配置 Xcode 将补全请求路由到外部 AI 模型。


    📋 开发者迁移清单

    1. 审计 SiriKit:盘点所有语音功能,评估迁移影响范围
    2. 实现 App Intents:优先覆盖 3-5 个核心用户操作,支持流式多轮
    3. 配置隐私清单:用新 API 声明哪些 Intent 可上云、哪些必须留在设备端
    4. 适配折叠屏 API:新增 Adaptive Layout,处理铰链状态检测
    5. 迁移 UI:过渡到 Liquid Glass 2 设计语言(新设计 Token + 透明度滑块)
    6. 注册 App Intents Testing:用新测试框架验证 Siri/Shortcuts/Spotlight 集成

    💡 快速参考卡片

    操作关键命令/API
    定义 App Intentstruct XxxIntent: AppIntent
    声明参数@Parameter(title: "参数名")
    执行 + 对话回复func perform() -> ProvidesDialog
    调用设备端 AILLM.shared.createModel()
    CLI 调用 AIfm prompt "你的指令"
    调试 AI 性能Xcode 27 Instruments→ AI Profiling
    测试 App IntentsApp Intents Testing Framework

    WWDC 2026 标志着 Siri 从”语音助手”进化为”AI 代理”——而 App Intents 就是开发者接入这个新生态的钥匙。建议团队现在就开始迁移计划,2-3 年的窗口看似充裕,但 Core 功能的 Intents 设计和测试需要时间迭代。

  • 🔥 Linux 7.1-rc7 发布:最终候选版亮相,稳定版下周见

    🔥 Linux 7.1-rc7 发布:最终候选版亮相,稳定版下周见

    6月8日,Linus Torvalds 正式发布了 Linux 7.1 的第 7 个候选版本(rc7),并明确表示”就目前来看,这就是最后一个 RC 了”。这意味着 Linux 7.1 稳定版最早将于 6 月 14 日(下周日) 与用户见面。本文带你快速浏览 rc7 的核心变化,并回顾 7.1 整个周期的重磅新特性。


    🔧 rc7 的关键变化

    Linus 在发布公告中表示,本次 rc7 的补丁量虽然不算”小”,但整体收缩趋势明显——这是任何内核版本进入尾声的标志信号。最大变化集中在 GPU 驱动网络栈 两个领域,其余问题分布比较零散。

    🛡️ AMD ROCm CRIU 安全修复

    rc7 中最引人注目的变化是:AMD 开发的 DRM ioctl(用于 ROCm CRIU 功能)因为安全挑战被 禁用。ROCm CRIU 是 AMD 为 GPU 计算引入的 checkpoint/restore 功能,允许在 GPU 之间迁移计算任务。但由于该 ioctl 存在安全隐患,内核团队决定在修复方案完善前先行关闭。

    # 查看当前内核是否禁用了相关 ioctl
    # 如果内核已经应用 rc7 补丁,则此调用返回 ENOTTY
    dmesg | grep -i rocm
    
    # 检查内核配置
    zcat /proc/config.gz | grep CONFIG_DRM_AMD_ROCK

    🔍 更多 AMD Zen 6 CPU 检测支持

    rc7 扩展了对 AMD Zen 6 微架构的 CPU 检测能力。虽然 Zen 6 产品尚未大规模上市,但内核已开始为后续硬件铺路,确保发布即支持。

    其他值得注意的修复包括:

    • KVM:大量架构相关的修复,主要针对虚拟化场景
    • 文件系统:少量稳定性修复
    • 构建系统:修复了一些特殊配置下的编译失败问题

    📋 Linux 7.1 完整特性回顾

    Linux 7.1 开发周期从 4 月底持续至今,总计约 13,000 个非合并提交。以下是本周期最值得关注的新特性:

    🗂️ 全新内核级 NTFS 驱动

    Linux 7.1 引入了一个全新的内核原生 NTFS 驱动,这是从头重写的实现(并非旧的 ntfs-3g FUSE),支持完整的读写访问,性能远超传统方案。对于需要频繁与 Windows 系统交换数据的双系统用户来说,这是一个重大利好。

    # 确认新 NTFS 驱动已加载(内核 7.1+)
    lsmod | grep ntfs3
    
    # 挂载 NTFS 分区(新驱动自动匹配)
    sudo mount -t ntfs3 /dev/sdX1 /mnt/windows
    
    # 如果希望使用旧驱动,可强制指定
    sudo mount -t ntfs-3g /dev/sdX1 /mnt/windows  # 需安装 ntfs-3g 包

    🖥️ Intel & AMD 新硬件支持

    7.1 周期为以下新型号提供了 初步图形支持

    • Intel Nova Lake(新一代 GPU 图形支持)
    • AMD Zen 6(已在 rc7 中进一步扩展检测支持)

    ⚡ 性能优化与现代化

    此周期还包括了大量代码移除和现代化改造——内核团队在积极推进旧代码的清理工作。此外,Rust for Linux 项目持续推进,图形子系统维护者 Dave Airlie 公开表示支持引入 Rust,认为这有助于吸引年轻一代的开发者参与内核维护。


    🤖 LLM 时代的 Linux 内核开发

    Linus 在本周期多次提到,7.1 周期的补丁量比历史同期”更重”,部分原因可归因于 AI/LLM 编码助手的普及。这不仅带来了更多补丁,也引发了内核维护者对 AI 生成代码质量的讨论。

    与此同时,由 LLM 发现的 vmsplice/splice 系统调用漏洞洪流 正在推动内核社区考虑彻底移除这些历史悠久的零拷贝 API。这标志着 AI 正在从根本上改变开源基础设施的安全维护方式。


    💿 如何测试 rc7

    如果你运行的是滚动更新发行版(如 Arch Linux 或 openSUSE Tumbleweed),可以直接从官方仓库安装 rc7 内核。对于其他发行版,也可以手动编译体验:

    # 从 kernel.org 获取 rc7 源码
    wget https://git.kernel.org/torvalds/t/linux-7.1-rc7.tar.gz
    tar xf linux-7.1-rc7.tar.gz
    cd linux-7.1-rc7
    
    # 使用当前内核配置为基础
    zcat /proc/config.gz > .config
    make olddefconfig
    
    # 编译并安装(多核加速)
    make -j$(nproc)
    sudo make modules_install install
    
    # 重启后确认内核版本
    uname -r
    # 应输出: 7.1.0-rc7

    💡 快速参考

    操作命令/说明
    获取 rc7 源码wget https://git.kernel.org/torvalds/t/linux-7.1-rc7.tar.gz
    查看内核版本uname -r
    挂载 NTFS 分区(新驱动)mount -t ntfs3 /dev/sdX1 /mnt
    确认 NTFS 驱动状态lsmod | grep ntfs3
    检查 ROCm 相关日志dmesg | grep rocm
    官方发布公告Linus 邮件列表

    📌 总结

    Linux 7.1-rc7 的发布标志着 7.1 开发周期进入收官阶段。从全新 NTFS 驱动、新硬件支持到 AI 对内核开发流程的深刻影响,这个周期充满了引人注目的变化。如果你感兴趣,不妨在这最后一周给 rc7 一次测试跑,让 7.1 的最终发布更加稳健。

  • 🔥 开源替代 Claude Design 来了!Open Design 本地优先、支持 21+ 编程助手的 Agent-native 设计平台

    🔥 开源替代 Claude Design 来了!Open Design 本地优先、支持 21+ 编程助手的 Agent-native 设计平台

    2026年4月,Anthropic 发布了 Claude Design,开创了”AI 原生设计”的新范式——但它是闭源的、云端托管的、且锁定在 Anthropic 生态。仅仅八周后,一个社区驱动的开源项目 Open Design 以 57,400+ GitHub Stars 证明:设计生成应该属于每一个开发者,不受厂商锁定、数据完全本地可控。本文将带你从零部署 Open Design,并理解它的 Skill-as-File 架构如何颠覆传统设计工具。


    🔥 Open Design 是什么?

    Open Design 是一个本地优先、开源(Apache-2.0)、Agent-native的设计生成平台。它不是另一个 Figma 或 Canva——它是一个让 AI 编程助手(Claude Code、Cursor、Copilot 等)直接从命令行生成高保真设计成品的系统。

    核心理念:“Skill-as-File”——设计逻辑不再是藏在脑中的 Prompt 技巧,而是以 Markdown 文件形式存储在文件系统中,可版本控制、可团队共享、可被 CI/CD 调用。

    关键数据

    • ⭐ GitHub Stars:58,900+(截至 6月5日)
    • 🗂️ 内置 Skills(设计技能):259+ 个可复用模块
    • 🎨 内置 Design Systems:149+ 套品牌设计系统(Stripe、Vercel、Apple 等)
    • 🤖 支持 CLI 适配器:21+ 个 AI 编程助手
    • 📜 许可证:Apache-2.0,完全开源

    ⚙️ 三种部署方式

    根据你的使用场景,Open Design 提供三种部署路径:

    方案一:桌面应用(推荐零配置)

    open-design.ai 下载原生安装包,支持 macOS(Apple Silicon / Intel)和 Windows(x64)。开箱即用,内置 Electron 壳和本地守护进程。

    方案二:CLI 快速安装(适合已有 CLI Agent 的开发者)

    # 一行命令:安装 Open Design 并接入 Claude Code
    curl -fsSL https://open-design.ai/install.sh | sh -s claude
    
    # 接入 Cursor(目录下会自动识别)
    curl -fsSL https://open-design.ai/install.sh | sh -s cursor
    
    # 检测所有可用 Agent(无需手动配置)
    # Open Design 的守护进程会自动扫描 PATH 中的 21+ 种 CLI 工具

    方案三:Docker 自托管(生产环境推荐)

    适合团队部署或数据合规要求严格的场景——所有设计数据存储在本地 SQLite 中,不经过第三方服务器。

    # 克隆仓库并启动 Docker Compose
    git clone https://github.com/nexu-io/open-design.git
    cd open-design/deploy
    
    # 配置环境变量(生成随机 Token)
    cp .env.example .env
    echo "OD_API_TOKEN=$(openssl rand -hex 32)" >> .env
    
    # 启动服务
    docker compose up -d

    🧠 架构深度解析:Skill-as-File

    Open Design 最革命性的设计是它用纯文件系统替代了传统设计工具的数据库和闭源格式。整个平台由三层构成:

    1. Skill(技能层)

    每个 Skill 是一个文件夹,内含 SKILL.md + 资源文件。例如内置的 html-ppt Skill 包含 36 个主题、31 种布局、47 种动画、14 个模板——相当于一个浏览器内的 PPT 引擎。

    2. Design System(设计系统层)

    品牌身份以 DESIGN.md 文件定义,涵盖 9 个维度:color · typography · spacing · layout · components · motion · voice · brand · anti-patterns。内置 149+ 套品牌系统,从 Stripe 到 Apple 一应俱全。

    3. Plugin(插件层)

    通过 open-design.json 清单文件定义的自包含功能包,目前社区已有 260+ 个官方插件。

    当你让 Claude Code “用 Stripe 设计系统生成一个 Landing Page” 时,底层的 Prompt Stack 是这样组合的:

    # Open Design 的 Prompt Stack 结构(文件级组合)
    DISCOVERY directives         # 发现层:表单收集需求
      + identity charter         # 身份层:设计原则与反模式
      + active DESIGN.md         # 品牌层:选中的设计系统
      + active SKILL.md          # 技能层:选中的生成技能
      + project metadata         # 项目元数据
      + skill side files         # 辅助文件:模板、参考
      + DECK_FRAMEWORK           # 渲染框架指令

    🔌 MCP 集成:无缝接入你的编程助手

    Open Design 通过 MCP(Model Context Protocol)暴露本地设计资源,让主流 AI 编辑器直接读取你的设计系统:

    # 将 Open Design MCP 服务器安装到不同 Agent
    od mcp install claude     # 接入 Claude Code
    od mcp install cursor     # 接入 Cursor
    od mcp install copilot    # 接入 GitHub Copilot
    
    # 然后在 Agent 中直接使用:
    # > "Use open-design to generate a landing page with Linear design system"

    💡 快速参考

    操作命令/方式
    桌面端安装open-design.ai 下载原生安装包
    CLI 一键接入curl -fsSL https://open-design.ai/install.sh | sh -s claude
    Docker 部署git clone && cd deploy && docker compose up -d
    MCP 集成od mcp install cursor
    生成 Landing Page在 Agent 中输入:Use open-design to generate a landing page with Stripe design system
    数据存储位置.od/projects/ (文件) + .od/app.sqlite (数据库)
    兼容模型Claude Code / Cursor / Copilot / Gemini CLI / OpenCode 等 21+

    Open Design 代表了 AI 设计工具的下一个阶段:开源、本地优先、Agent-native。它把设计能力从云端 SaaS 的围墙花园中解放出来,让每一位开发者都能用自己熟悉的编程助手,在自己的数据主权范围内,生成品牌级的专业设计成品。如果你已经是一名 Claude Code 或 Cursor 用户,Open Design 绝对值得今晚就上手试试。

  • 🔒 Ubuntu 紧急安全更新:Linux 内核修复 Dirty Frag、Fragnesia 及 AppArmor 系列漏洞

    🔒 Ubuntu 紧急安全更新:Linux 内核修复 Dirty Frag、Fragnesia 及 AppArmor 系列漏洞

    6 月 2 日,Canonical 紧急发布了针对 Ubuntu 26.04 LTS 及多个 LTS 版本的 Linux 内核安全更新(USN-8370-1、USN-8371-1),修复了包括 Dirty FragFragnesia 以及 AppArmor 通知子系统 在内的数十个高危漏洞。这些漏洞可被本地攻击者用于提权至 root、逃逸容器,甚至导致内核崩溃。本文梳理受影响范围、漏洞机理与应急修复步骤。


    🔓 漏洞全景:三组高危漏洞链

    本次更新覆盖三大漏洞类别,总 CVE 数量超过 30 个。以下是分类梳理:

    1. Dirty Frag + Fragnesia — 网络子系统提权

    Dirty Frag(CVE-2026-43284、CVE-2026-43500 等)是 XFRM ESP-in-TCP 和 RxRPC 子系统中关于 共享页片段 的逻辑缺陷。攻击者可通过精心构造的网络操作触发该漏洞,实现 本地提权至 root,甚至 逃逸容器。与其高度关联的 Fragnesia(CVE-2026-43503、CVE-2026-46300)则是 XFRM ESP-in-TCP 处理 socket 缓冲区片段时的另一逻辑漏洞,影响同样严重。

    这两组漏洞自 5 月初披露以来已有多家机构发布 PoC,本次 Canonical 的补丁是对此前不完整修复的全面补充和加固。

    2. ptrace 退出竞争条件 — 敏感信息泄露

    CVE-2026-46333 是 ptrace 子系统中一个 exit-race 竞争条件漏洞。当特权进程退出时,非特权本地攻击者可利用时间窗口读取进程残留数据,泄露 SSH 主机密钥和 /etc/shadow 内容。该漏洞已在 CloudLinux 等发行版中确认影响。

    3. AppArmor 通知子系统 — 8 个独立漏洞

    由 Tristan Madani 和 Trevor Lawrence 发现的 AppArmor 系列漏洞(影响内核 6.8/6.17/7.0)涵盖了内存泄漏(CVE-2026-47326)、空指针解引用(CVE-2026-47327)、越界读取(CVE-2026-47332)、持有锁错误(CVE-2026-47334)等多种类型。攻击者可利用这些漏洞造成内核崩溃(oops)、资源耗尽、内存损坏,甚至绕过 AppArmor 策略限制。


    ⚠️ 特别注意:内核 ABI 变更

    本次更新涉及 不可避的 ABI 变更,更新后的内核版本号出现跳跃。这意味着:

    • 如果安装了 第三方内核模块(如 NVIDIA 专有驱动、VirtualBox 内核模块、ZFS 等),必须重新编译并重装
    • 标准 Ubuntu 安装(使用 linux-generic 等 meta 包)会在自动更新时处理此问题
    • 手动管理内核模块的用户需格外留意

    ⚙️ 修复步骤

    更新 & 重启

    标准两步操作,在终端中依次执行:

    # 第一步:更新内核包(Ubuntu 26.04 LTS / 24.04 LTS / 22.04 LTS 通用)
    sudo apt update && sudo apt upgrade -y
    
    # 第二步:重启系统加载新内核
    sudo reboot

    验证当前内核版本

    重启后,检查内核版本是否已更新至修复版本:

    # 查看当前运行的内核版本
    uname -r
    
    # Ubuntu 26.04 LTS 用户应看到 >= 7.0.0-22-generic
    # Ubuntu 24.04 LTS 用户应看到 >= 6.17.0-35-generic
    # Ubuntu 22.04 LTS 用户(USN-8373-1)应通过 apt 确认

    重新编译第三方模块

    如果有第三方内核模块,以 NVIDIA 驱动为例:

    # 重新安装 NVIDIA 驱动(会自动重新编译内核模块)
    sudo apt install --reinstall nvidia-driver-570
    
    # 或者使用 DKMS 自动重建
    sudo dkms autoinstall

    🎯 影响范围

    本次更新涉及的主要 Ubuntu 版本和内核风格:

    • Ubuntu 26.04 LTS (Resolute) — USN-8370-1(kernel 7.0.0-22)
    • Ubuntu 25.10 (Questing) — USN-8371-1(kernel 6.17.0-35)
    • Ubuntu 24.04 LTS (Noble) — USN-8371-1 / USN-8373-1
    • Ubuntu 22.04 LTS (Jammy) — USN-8373-1

    所有内核风格均受影响:Generic、AWS、GCP、Azure、Oracle、IBM、NVIDIA、Raspberry Pi、Real-time。


    💡 快速参考

    操作命令
    检查当前内核版本uname -r
    更新系统包sudo apt update && sudo apt upgrade -y
    查看待重启标记cat /var/run/reboot-required
    重启生效sudo reboot
    查看可用的内核包apt list --upgradable 2>/dev/null \| grep linux-image
    DKMS 自动重建模块sudo dkms autoinstall
    USN-8370-1 原文https://ubuntu.com/security/notices/USN-8370-1

    Canonical 此次大规模内核安全更新覆盖了从 Dirty Frag 提权到 AppArmor 策略绕过等数十个高危漏洞,且涉及 ABI 变更。对于所有 Ubuntu 服务器和桌面用户,立即更新并重启是当前最高优先级操作。建议 sysadmin 在更新后重点检查第三方内核模块是否正常运行,防止因 ABI 变更导致驱动加载失败。

  • 🔒 GitHub Copilot 今日起全面切换 Token 计费:定价拆解与替代方案指南

    🔒 GitHub Copilot 今日起全面切换 Token 计费:定价拆解与替代方案指南

    2026 年 6 月 1 日,GitHub Copilot 正式告别固定订阅制,全面切换为基于 Token 消耗的「AI Credits」用量计费模式。代码补全除外,Chat、Agent Mode、Code Review 全部走 Token 账单。这意味着重度用户可能面临 6~27 倍的费用上涨。本文为你拆解新定价的具体规则、实际成本测算,以及四款值得关注的替代方案。


    🔥 发生了什么?核心变化一览

    从今天起,GitHub Copilot 的计费单位从「Premium Request Units(PRU)」变更为 GitHub AI Credits——1 Credit = $0.01 USD。每个计划每月附赠等额的 Credits,超出部分按 Token 用量另行计费。

    💡 关键区别:以前超额后会自动降级到低成本模型;现在超额后直接停服,除非管理员开启了「允许超额」并配置了预算上限。

    各计划资费速览

    计划月费每月附赠 Credits等值 Token 用量参考
    Copilot Free$0极少量仅适合偶发查询
    Copilot Pro$101,000 Credits约 125 万 input tokens
    Copilot Pro+$393,900 Credits约 490 万 input tokens
    Copilot Business$19/user1,900 Credits*促销期 $30 Credits
    Copilot Enterprise$39/user3,900 Credits*促销期 $70 Credits

    *Business/Enterprise 促销期(6-8月)额外赠送 Credits。


    ⚙️ 到底多少钱?实际账单拆解

    新定价的底层逻辑很简单:按模型 × 按 Token 量 × 按输入/输出分别计费。输出 Token 的价格通常是输入的 4~6 倍。

    主流模型每百万 Token 价格

    模型输入 ($/1M tokens)缓存输入 ($/1M)输出 ($/1M)适用场景
    GPT-5 mini$0.25$0.025$2.00日常代码补全
    Grok Code Fast 1$0.20$0.02$1.50极致轻量
    Claude Sonnet 4.6$3.00$0.30$15.00主流首选
    GPT-5.4$2.50$0.25$15.00通用推理
    Claude Opus 4.7$5.00$0.50$25.00复杂重构
    GPT-5.5$5.00$0.50$30.00高级推理

    典型开发者的月费推演

    假设你每天使用 Copilot Chat 和 Agent Mode,月均消耗 200 万 input tokens + 100 万 output tokens(使用 Claude Sonnet 4.6):

    # 月费计算(纯用量模式,无订阅)
    input_cost  = 2_000_000 × $3.00 / 1_000_000 = $6.00
    output_cost = 1_000_000 × $15.00 / 1_000_000 = $15.00
    # 总计:$21.00/月
    
    # 对比旧版固定订阅:$10/月
    # 涨幅:2.1x
    
    # 如果使用 Opus 4.7 + 更长上下文(500万 input / 200万 output)
    input_cost  = 5_000_000 × $5.00 / 1_000_000 = $25.00
    output_cost = 2_000_000 × $25.00 / 1_000_000 = $50.00
    # 总计:$75.00/月
    # 涨幅:7.5x

    更夸张的是年度订阅用户——他们的模型倍率从 1x 暴涨到 6~27x,「用同样的量,花 27 倍的钱」不再是段子,而是 Opus 用户的现实。


    🔧 省钱的五个实操策略

    好消息是,GitHub 并没有完全堵死省钱的路。以下几个策略可以有效降低账单:

    • 默认用小模型:日常编码用 GPT-5 mini 或 Grok Code Fast 1(输入仅 $0.20~$0.25/百万 token),仅在复杂任务时才切到 Sonnet 或 Opus
    • 选中 Pro 订阅而非纯用量:$20/月订阅含 100 万 input + 50 万 output tokens,中度用户比纯用量更划算
    • 利用缓存 Token:重复上下文(如同一代码库的导入语句)走缓存输入,价格仅为正常的 10%
    • 精简 Prompt:去掉不必要的背景上下文、减少 Agent Mode 的自动探索深度,Token 即金钱
    • 利用促销期:Business/Enterprise 用户 6-8 月有额外 Credits,抓紧适应新节奏

    🔄 替代方案:四款值得迁移的 AI 编程工具

    如果你对用量计费模式不适应,以下是 2026 年 6 月当下最值得尝试的四款替代品:

    工具月费底层模型亮点适合人群
    DeepSeek V4 Pro$5~$10DeepSeek V4推理能力接近 GPT-5,价格仅 1/10预算敏感型开发者
    Qwen 3.5 Plus$5阿里 Qwen 3.5中文支持极佳,上下文 128K中文 / 全栈开发者
    Kimi K2.6$5~$8Moonshot Kimi超长上下文(200K),Agent 能力强大型项目 / 代码库调研
    Cline(开源)免费可自选模型VSCode 开源插件,BYO API Key有自建模型能力的团队

    以 DeepSeek V4 Pro 为例,同样 200 万 input + 100 万 output tokens 的月用量,费用仅为 $2~$4——不到 Copilot 新定价的 1/5。


    💡 快速参考

    场景推荐操作
    月度 Token 消耗 < 50 万用纯用量计费,无需订阅
    月度 Token 消耗 50~200 万选 $20 Pro 订阅计划
    月度 Token 消耗 > 500 万切到 DeepSeek V4 Pro 或 Qwen 3.5 Plus
    年度订阅用户尽快联系销售调整计划,避免 27x 倍率
    团队管理开启企业池化 Credits + 设置分级别预算上限
    简单任务强制使用 GPT-5 mini 或 Grok Fast 模型

    GitHub Copilot 的 Token 计费时代已经来临。这不是暂时的促销调整——这是 AI 编程工具从「网飞式订阅」向「云计算式计费」的根本性转变。适应新规则、学会管理 Token 成本,将在 2026 年成为每个开发者的必备技能。


    参考:GitHub Blog, GitHub Docs, bytee.org, WellWells, Visual Studio Magazine

  • 低配 VPS 部署 OpenClaw 完整指南

    低配 VPS 部署 OpenClaw 完整指南

    OpenClaw 是一个轻量的 AI Agent 网关工具。在低配 VPS(1核1G甚至更低)上部署时,需要一些特别的步骤来避免 systemd 服务错误。本文记录完整流程。

    一、安装基本依赖

    1. 安装 curl

    sudo apt-get install -y curl

    2. 添加 NodeSource 官方源(Node 22)

    curl -fsSL https://deb.nodesource.com/setup_22.x | sudo bash -

    3. 安装 Node.js

    sudo apt-get install -y nodejs

    4. 确认版本

    node -v
    npm -v

    二、安装 OpenClaw

    npm install -g openclaw@latest
    openclaw --version

    三、配置与 systemd 服务

    直接运行 openclaw onboard 开始配置。但 root 用户下会报服务错误,需要手动创建 systemd 服务文件。

    第一步:创建 systemd 服务文件

    cat > /etc/systemd/system/openclaw-gateway.service << 'EOF'
    [Unit]
    Description=OpenClaw Gateway
    After=network-online.target
    Wants=network-online.target
    
    [Service]
    Type=simple
    User=root
    WorkingDirectory=/root/.openclaw
    ExecStart=/usr/bin/openclaw gateway
    Restart=always
    RestartSec=3
    Environment=NODE_OPTIONS=--max-old-space-size=512
    Environment=OPENCLAW_NO_RESPAWN=1
    Environment=NODE_COMPILE_CACHE=/var/tmp/openclaw-compile-cache
    Environment=HOME=/root
    
    [Install]
    WantedBy=multi-user.target
    EOF

    第二步:设置运行时目录(如仍报错)

    如果仍然报运行时目录错误,执行:

    export XDG_RUNTIME_DIR=/run/user/$(id -u)
    loginctl enable-linger root
    echo 'export XDG_RUNTIME_DIR=/run/user/$(id -u)' >> ~/.bashrc

    第三步:启动服务

    systemctl --user daemon-reload
    systemctl --user enable openclaw-gateway.service
    systemctl --user start openclaw-gateway.service

    第四步:确认状态

    openclaw status

    四、网关诊断与 Cerebras 配置参考

    网关诊断

    openclaw gateway probe
    openclaw gateway restart   # 重启服务

    Cerebras API 配置示例

    在 OpenClaw 配置中添加 Cerebras 作为 provider:

    {
      "models": {
        "providers": {
          "cerebras": {
            "baseUrl": "https://api.cerebras.ai/v1",
            "apiKey": "你的Cerebras API Key",
            "api": "openai-completions",
            "models": [
              {
                "id": "gpt-oss-120b",
                "name": "gpt-oss-120b",
                "contextWindow": 128000,
                "maxTokens": 32000
              }
            ]
          }
        }
      }
    }

    五、卸载

    需要完全卸载时的操作步骤:

    1. 停止并禁用服务

    systemctl stop openclaw-gateway.service
    systemctl disable openclaw-gateway.service

    2. 删除服务文件

    rm /etc/systemd/system/openclaw-gateway.service
    systemctl daemon-reload

    3. 卸载 openclaw

    npm uninstall -g openclaw

    4. 删除数据目录

    rm -rf /root/.openclaw

    5. 确认进程已终止

    ps aux | grep openclaw
  • Ubuntu 上如何配置防火墙?—— UFW 快速入门

    Ubuntu 上如何配置防火墙?—— UFW 快速入门

    Ubuntu 上,默认情况下是没有启用防火墙的。服务器安装完系统后,配置防火墙应该是第一件要做的事。本文用最简洁的方式带你配好 UFW。

    🔥 Ubuntu 自带的防火墙工具

    Ubuntu 默认自带的、也是推荐使用的防火墙管理工具是 UFWUncomplicated FireWall,简单防火墙)。

    • UFWiptables 的用户友好前端,日常管理比直接写 iptables 规则方便得多。
    • 语法简单、学习成本低、适合服务器日常运维。

    ⚙️ 防火墙设置与管理

    1. 启用防火墙

    配置规则之前,建议先启用 UFW。⚠️ 但有一个前提:请先确保你已经放行了 SSH(端口 22),否则启用后自己会被锁在服务器外面。

    先放行 SSH:

    sudo ufw allow ssh

    然后启用防火墙:

    sudo ufw enable
    sudo ufw status          # 查看状态
    sudo ufw status verbose  # 查看详细状态 + 默认策略

    2. 设置默认策略

    默认策略决定了没有匹配规则的连接如何处理:

    sudo ufw default deny incoming    # 拒绝所有传入(最安全)
    sudo ufw default allow outgoing   # 允许所有传出(默认)

    🔓 开放端口与服务

    A. 按端口号开放

    # 开放 TCP 端口(最常用)
    sudo ufw allow 80/tcp    # HTTP
    sudo ufw allow 443/tcp   # HTTPS
    
    # 开放 UDP 端口
    sudo ufw allow 53/udp    # DNS
    
    # TCP + UDP 同时开放
    sudo ufw allow 123       # NTP

    B. 按服务名称开放

    UFW 内置了常用服务名(映射到 /etc/services):

    sudo ufw allow ssh       # TCP 22
    sudo ufw allow http      # TCP 80
    sudo ufw allow https     # TCP 443

    C. 按应用程序配置文件开放

    某些程序安装时会自带 UFW 配置文件:

    # 查看可用的应用程序配置
    sudo ufw app list
    
    # 开放特定应用
    sudo ufw allow 'Nginx Full'

    🗑️ 删除与重置

    删除规则

    # 删除一条规则
    sudo ufw delete allow 80/tcp

    重置防火墙(谨慎!)

    ⚠️ 此操作会删除所有规则并禁用防火墙

    sudo ufw reset

    💡 快速参考卡片

    操作命令
    启用防火墙sudo ufw enable
    查看状态sudo ufw status verbose
    开放端口sudo ufw allow 80/tcp
    开放服务sudo ufw allow ssh
    删除规则sudo ufw delete allow 80/tcp
    重置sudo ufw reset

    做到这四步——放行 SSH、启用、配默认策略、开放必要端口——你的 Ubuntu 服务器防火墙就算配好了。