2024-03-30

28 篇热帖

1. Backdoor in upstream xz/liblzma leading to SSH server compromise (www.openwall.com)

上游xz/liblzma后门漏洞总结

上游xz/liblzma项目被植入后门,导致使用受影响版本的系统面临SSH服务器被入侵的风险。

漏洞发现与背景

安全研究员Andres Freund在Debian sid系统中观察到异常现象:通过SSH登录时CPU占用率显著升高,且valgrind报告错误。经过调查,发现这是由上游xz仓库及其发布的tarball中被植入的恶意代码导致,而非仅Debian特定问题。

后门组成与注入方式

后门由两部分组成:

  1. 发布包后门:存在于xz 5.6.0和5.6.1版本的官方tarball中(而非Git仓库源码)。恶意代码被注入到build-to-host.m4文件中,在构建过程的configure阶段执行。
  2. 仓库后门:以混淆形式存在于测试文件bad-3-corrupt_lzma2.xzgood-large_compressed.lzma中。

攻击者通过修改构建过程,将恶意代码注入到生成的liblzma共享库(liblzma.so)中。

后门工作原理与影响

该后门主要针对OpenSSH服务器(sshd):

  • 触发条件:当被感染的liblzma被链接到支持systemd通知的OpenSSH服务端时生效。
  • 技术机制:后门替换liblzmacrc64的ifunc解析函数,并在运行时劫持sshd。它通过安装一个动态链接器审计钩子,在符号解析过程中等待并劫持RSA_public_decrypt@....plt函数,将其指向恶意代码。
  • 最终效果:在SSH公钥认证过程中,恶意代码被调用,可能允许攻击者绕过认证,获得未授权访问或执行远程代码。
  • 性能影响:感染后,SSH登录时间会明显变慢。

漏洞影响范围与条件

该后门具有严格的目标选择条件,仅在满足以下所有条件时激活:

  • 系统架构:x86_64 Linux。
  • 编译环境:使用GCC和GNU链接器。
  • 构建上下文:正在作为Debian或RPM软件包的一部分进行构建(以规避调查复现)。
  • 运行时环境:运行于glibc系统中,且argv[0]/usr/sbin/sshdTERMLD_DEBUG等特定环境变量需满足特定状态。

漏洞状态与应对

  • CVE编号:CVE-2024-3094。
  • 影响版本:xz 5.6.0 和 5.6.1。
  • 当前状况:截至发现时,受影响版本尚未被Linux发行版广泛集成。
  • 检测方法:可使用提供的检测脚本(detect.sh)来判断系统中的sshd二进制文件是否可能存在风险。
  • 应对建议:立即升级或回滚到已知安全的xz/liblzma版本。

该事件表明,一次精心策划的上游供应链攻击可以直接危及核心基础设施组件(如SSH)的安全。

2. IrfanView (www.irfanview.com)

IrfanView 图形查看器

核心特点

  • 软件性质:快速、紧凑(仅约 8MB)的图形查看器。
  • 授权与平台:非商业用途免费,支持从 Windows XP 到 Windows 11 的多个系统版本,并提供 32 位和 64 位版本。
  • 语言支持:支持多语言及 Unicode。
  • 设计哲学:旨在做到简单而功能强大。

主要功能 软件提供了丰富的功能,包括但不限于:

  • 查看图像
  • 格式转换
  • 图像优化
  • 扫描与打印
  • 创建幻灯片
  • 批量处理
  • 多媒体支持
  • 以及其他更多功能

插件更新 文中提示,插件页面上发布了一个更新的 Paint 插件,修复了克隆工具的一个错误。

作者致谢 作者 Irfan Skiljan 衷心感谢所有用户发送的祝福、祝贺和赞赏信息。

4. Santa Barbara's collective memory, sold for kindling (www.independent.com)

圣巴巴拉集体记忆面临被变卖为“引火柴”的风险

《圣巴巴拉新闻邮报》拥有155年不间断的社区历史记录,从诞生、毕业到婚礼、讣告,无所不包。它每周六天将我们的历史实时呈现,既是门前的实体报纸,也提供了近30年的在线数字档案。如今,随着该报破产,其数字资产即将被拍卖,这些集体记忆面临永久消失的危险。

报纸的衰落与破产

2000年,隐居的本地亿万富翁温迪·麦考从纽约时报公司手中收购了该报。2006年起,麦考开始干预编辑独立性,试图压制可能令其权贵圈子难堪的报道。当时主编杰里·罗伯茨带领新闻编辑室坚持刊登,引发大规模记者离职,并招致麦考长达十年的法律和诽谤战。报纸信誉受损,最终在2023年7月21日申请破产。破产文件列出的资产估值仅11.6万美元,被指偏低,因为麦考此前已将报社总部的房产和印刷厂转入其私人公司名下,使得未数字化的物理档案(缩微胶片和新闻纸)可能被扣押其中。破产律师称这些资产转移是旨在逃避清算的欺诈行为。

数字资产拍卖与可疑买家

为偿还近900名债权人,破产法院开始清算报纸的“在线资产”,包括约30年的数字内容、社交媒体账户、商标及网站域名。2024年3月7日,一家在马耳他注册的公司Weyaweya, Ltd.已达成初步协议,以25万美元购买这些资产。该公司的签署人马克斯·诺雷莫是一家名为Link.Builders的马耳他SEO(搜索引擎优化)服务公司的关联方。

Link.Builders专营“反向链接”业务。反向链接是其他网站指向某网站的链接,能提升该网站在搜索引擎中的权威性和排名。该公司的商业模式涉及购买拥有良好历史内容档案的网站,然后在其中嵌入客户付费的、通常质量较低的“人工”反向链接内容,从而规避搜索引擎的惩罚。这种做法在AI生成内容兴起后更加有利可图,实质上是将高质量内容库转变为“反向链接农场”,最终摧毁原始内容。

诺雷莫已被证实与多个此类“僵尸网站”有关,如《GamblingTimes.com》和《CricFolks.com》。近期,类似操作已波及美国倒闭的社区报纸,如爱荷华州的《Clay顿县纪事报》和明尼阿波利斯的《西南日报》,其网站和历史档案均被转化为SEO工具。《圣巴巴拉新闻邮报》的数字档案很可能面临相同命运。

呼吁社区拯救历史

尽管报纸是私人企业,但长期以来类似公共信托,通过提供关键社区报道赢得读者。如今,为了短期广告收益而摧毁代表数百万小时劳动的历史高质量档案,极具讽刺意味。

如果诺雷莫成功收购,《圣巴巴拉新闻邮报》将成为又一艘数字“幽灵船”。目前似乎没有任何其他机构拥有该报完整的数字记录。拯救这些集体记忆的最后机会在于现场拍卖会,定于2024年4月9日下午2点在圣巴巴拉联邦破产法院举行。有能力购买并保存这些档案的社区成员——包括新闻机构负责人、非营利组织管理者、市府官员、企业领袖和热心市民——被呼吁尽快采取行动,竞标保存社区几十年来的历史故事。

5. Prolog language for PostgreSQL proof of concept (github.com)

PostgreSQL Prolog 扩展概念验证总结

项目概述

这是一个将 Scryer Prolog 嵌入 PostgreSQL 的扩展概念验证项目,允许在 PostgreSQL 中使用 Prolog 语言编写存储过程。该项目目前处于早期实验阶段,不适用于生产环境

技术基础

  • 实现方式:通过 PostgreSQL 扩展机制集成 Prolog 解释器
  • 使用工具:基于 Rust 的 PostgreSQL 扩展框架 pgrx
  • Prolog 实现:使用 Scryer Prolog 作为底层引擎

当前状态

  • 性质:概念验证(Proof of Concept)
  • 成熟度:实验性项目,未准备好实际使用
  • 目标:展示在 PostgreSQL 中嵌入逻辑编程语言的可能性

使用步骤

1. 安装准备

cargo install --locked cargo-pgrx
cargo pgrx init

2. 运行与部署

cargo pgrx run

3. 数据库配置

-- 创建扩展
CREATE EXTENSION pgprolog;

-- 注册 Prolog 语言
CREATE LANGUAGE plprolog HANDLER plprolog_call_handler;

4. 创建示例函数

CREATE FUNCTION myfunc(a TEXT) RETURNS TEXT AS 
'parent(alice,bob). handle(In,Out) :- parent(In,Out).' 
LANGUAGE plprolog;

5. 测试执行

SELECT myfunc('alice');

核心特性

  • 语言支持:允许直接在 PostgreSQL 中编写 Prolog 规则
  • 集成方式:通过 plprolog 语言处理器调用 Prolog 逻辑
  • 交互模式:将 Prolog 的统一(unification)和回溯(backtracking)能力引入 SQL 环境

应用示例

示例中的 parent/2 关系展示了如何定义简单的事实关系,handle/2 规则演示了 Prolog 的逻辑推理过程在 PostgreSQL 函数中的实现方式。

技术意义

该项目探索了在关系数据库中集成声明式逻辑编程语言的可能性,为数据查询、规则推理和知识表示提供了新的实验性途径。

6. About the Tailscale.com outage on March 7, 2024 (tailscale.com)

事件概述

2024年3月7日,Tailscale 官网 tailscale.com 因 TLS 证书过期而无法访问,持续约 90 分钟。中断主要影响营销材料和文档,但对大多数 Tailscale 核心服务影响有限。

原因分析

  • 迁移背景:2023 年 12 月,网站迁移到新托管提供商,但该提供商不支持原生 IPv6。为满足 IPv6 需求,Tailscale 自行运行代理并添加额外的 AAAA 记录。
  • 配置问题:托管提供商将此视为“错误配置”,并发送警报,但未明确说明这会阻碍证书自动更新。
  • 探针缺陷:现有探针仅通过 IPv6 检查证书有效期,且命中了代理(该代理有独立管理的有效证书),因此未检测到主网站证书的过期。
  • 证书过期:在自动更新失败后,tailscale.com 和 www.tailscale.com 的证书于 3 月 7 日过期,导致网站不可用。

影响范围

  • 主要中断:Tailscale 文档(tailscale.com/kb)、博客和参考材料无法访问。
  • 间接影响:管理控制台未受影响,但用户可能误以为离线;快速安装脚本(tailscale.com/install.sh)不可用,干扰了部分安装。
  • 最小影响:实际提供 Tailscale 包的域名保持可用,通过 Go 的 go get 机制中断极小(得益于缓存)。

修复与改进措施

  • 即时修复:临时移除额外 AAAA 记录并手动更新证书,恢复网站访问。
  • 短期计划
    • 使用冗余日历警报和手动窗口定期更新证书。
    • 更新探针基础设施,分别检查 IPv4 和 IPv6 端点。
  • 长期目标:改进网站基础设施以直接支持 IPv6,从而消除对代理的需求。

设计优势

Tailscale 的设计强调直接设备连接,减少对中心化端点(如 tailscale.com)的依赖。因此,此次中断未影响大多数用户的核心网络操作。

7. Xz: Can you spot the single character that disabled Linux landlock? (git.tukaani.org)

文章摘要:
本文讨论了Linux Landlock沙箱机制在构建配置中被单个字符禁用的问题。核心变更在于CMake构建文件中对Landlock功能的检测方式:

  1. 原方法:仅检查 linux/landlock.h 头文件是否存在。
  2. 新方法:改为通过编译测试验证头文件、系统调用和相关常量是否实际可用,因为某些系统虽具备头文件却缺乏必要的系统调用支持。
  3. 关键陷阱:新增的编译测试代码中多了一个英文句点字符 .,出现在预处理指令行首,导致预处理器解析错误,从而意外禁用了Landlock功能

修改目的:确保Landlock不仅需要头文件,还需完整的系统调用支持才能启用。

8. How GitHub replaced SourceForge as the dominant code hosting platform (graphite.dev)
  • GitHub成为主流代码托管平台前,开发者多使用CVS、SVN等集中式版本控制工具,开源项目则主要分布在SourceForge和Google Code等平台。这些平台注重软件分发,缺乏方便的代码浏览、评论、协作等功能,且流程复杂,私有仓库不可用,流程如申请、审核费时。
  • 2004年,Linus Torvalds发明Git,推动分布式版本控制系统普及,极大便利代码分支、协作和本地存储,但企业端仍依赖SVN、Perforce等。
  • 2008年,受Rails等开源社区采用Git以及社交网络崛起影响,Tom Preston-Werner和Chris Wanstrath创立GitHub,聚焦Git仓库在线托管,融合社交功能(如开发者主页、新闻源、评论、代码浏览、项目动态),大幅提升协作体验,成为首个实现“社交编程”的平台。
  • GitHub迅速获得Rails等主流开源项目支持,用户和仓库数量在短时间内爆发式增长。2009年推出私有仓库和企业自托管版本,2010年面向组织和团队,2012年正式发布GitHub Enterprise,逐步进入闭源和企业市场。
  • GitHub商业模式创新,采用付费订阅而非广告或传统企业销售,这一模式使其在收入和运营上比同类平台更具竞争力。其它尝试如培训、广告、周边产品也辅助盈利。主流VC直至2014年前并不看好开发者工具领域,GitHub早期依靠自我造血及合作伙伴资源扩展,2014获得Andreessen Horowitz一亿美元投资,成为最大A轮。
  • SourceForge、Google Code相继支持Git,但缺乏社交和协作属性,未能赢得新一代开发者。Facebook、Google未采纳GitHub,分别开发Phabricator和Piper等内部工具,主因在于需深度集成、自主掌控并应对巨型仓库特殊需求。
  • GitLab在2011成立,定位为一体化DevOps平台,主力CI/CD,拿下部分大型企业客户(如Nvidia),与GitHub形成竞争但主流市场仍由GitHub主导。
  • 到2022年,StackOverflow调研显示GitHub在专业团队市场份额远超GitLab,行业内绝大多数公司采用GitHub,少数采用GitLab、Phabricator、Gerrit或自建方案。GitHub通过网络效应和功能创新(如分支、评论、Moderation)在开源领域形成强垄断,闭源市场主要因Git托管简便而采纳,但社交功能实际价值有限。
  • 尽管Linus Torvalds高度评价GitHub的托管,亦批评其Pull Request实现,反映其兼容痛点。未来代码托管的发展预测:随着行业成熟,需求将更加专业化和模块化,开源与闭源协作需求分化,相关工具如Jira/Linear(Issue追踪)、Jenkins/Buildkite(CI)、Mergify/Aviator/Graphite(Merge Queue),逐步成为模块化解决方案。GitHub目前优势在于集成性和社交编程,但持续创新、细分以及开放生态可能带来更多选择,满足不同开发团队的特定需求。
  • 文章用时间线梳理代码托管平台演进:1999年SourceForge上线;2004年Git诞生;2006年Google Code上线;2008年GitHub创立;2009年SourceForge支持Git、GitHub推自托管方案;2010年Facebook开发Phabricator;2011年GitLab创立、Google Code增Git支持;2012年GitHub Enterprise发布;2016年Google Code关闭;2018年GitHub Actions上线;2021年Phabricator停止维护,用户进一步迁移至GitHub。
  • 当前行业趋势为模块化与专业化,多元平台逐步出现,GitHub凭借网络效应和产品功能成为事实垄断者,但未来仍有可能出现更多托管选择。
9. Running a Raspberry Pi with a read-only root filesystem (www.dzombak.com)

本文详细介绍了如何将树莓派(Raspberry Pi)设置为使用只读根文件系统运行,旨在通过减少对SD卡的写入来显著延长其使用寿命。该方案特别适用于无需在本地存储状态的应用,例如环境数据记录器。需要注意的是,此操作具有风险,可能导致系统无法启动。

核心目标与益处: 将根文件系统设为只读,可避免SD卡因频繁写入而快速损耗。代价是日志不会在重启后保留,因此需配合远程日志进行问题排查。

配置概览: 主要步骤包括:移除多余软件并禁用无用服务、禁用SD卡交换空间、为必须写入的进程提供临时文件系统(tmpfs)、处理各项服务的兼容性问题,最终配置系统为只读。

关键配置步骤:

  1. 系统准备: 禁用不必要的服务和SD卡交换。通过编辑 /boot/firmware/cmdline.txt(或旧版本的 /boot/cmdline.txt)添加 fsck.mode=skip noswap 来跳过文件系统检查和禁用交换。
  2. 时间同步迁移:systemd-timesyncd 迁移到 ntp,并配置其将状态文件(如 ntp.drift)存储在未来的tmpfs路径(如 /var/tmp)。同时,修改 fake-hwclock 脚本,允许其在运行时临时以读写模式重新挂载根文件系统以保存时钟状态。
  3. 网络与随机种子: 针对NetworkManager,将其需要写入的文件(如 resolv.conf、DHCP和NetworkManager状态目录)移动到 /var/run(tmpfs),并创建符号链接。将systemd的随机种子文件也移至 /tmp 并修改相关服务文件。
  4. 添加tmpfs条目:/etc/fstab 中为 /tmp/var/tmp/var/log/var/spool/mail/var/spool/rsyslog/var/lib/logrotate/var/lib/sudo 等目录配置tmpfs,为这些需要写入权限的路径提供基于内存的可写存储。
  5. 日志与服务调整: 可限制journald日志存储空间(如设置 SystemMaxUse=25M)或完全禁用持久化存储(Storage=none)。禁用 man-db.timerapt-daily.timer 等定时任务。
  6. 完成只读设置: 再次编辑 /boot/firmware/cmdline.txt,在行尾追加 ro 参数。修改 /etc/fstab 中SD卡分区的挂载选项,添加 ro 标志,并确保根分区挂载包含 noatime

便利功能:/etc/bash.bashrc 中添加配置,使命令行提示符显示当前文件系统模式(ro/rw),并提供 rw(切换为读写)和 ro(切换回只读)的快捷命令。可配置在用户注销时自动将文件系统重新挂载为只读。

验证与注意事项: 重启后,使用 mount 命令验证根分区和 /boot/firmware 分区是否以只读(ro)模式挂载,并检查 journalctl 日志以排查任何错误。某些服务(如avahi-daemon、snapd)可能会输出无法写入文件系统的警告,只要其主要功能正常,通常可以忽略。

10. Overlay networks based on WebRTC (github.com)

weron:基于WebRTC的叠加网络

概述

weron 是一个基于 WebRTC 构建的轻量、快速且安全的叠加网络工具。其主要功能包括:

  • 穿越 NAT:利用 WebRTC(支持 STUN/TURN)连接位于 NAT 或防火墙后的节点,例如无需端口转发即可 SSH 访问家庭网络。
  • 保护局域网:在低延迟局域网中,以较低开销加密节点间通信。
  • 连接本地与云端:将本地节点加入云端集群(如 Kubernetes),创建统一信任网络。
  • 绕过审查:底层 WebRTC 技术(被 Zoom、Teams 等使用)难以在网络层面封锁,可用于绕过审查。
  • 编写 P2P 协议:通过简单 API 支持自动重连、多数据通道等功能,便于开发分布式应用。

安装方法

  • Go 库:通过 go get github.com/pojntfx/weron/...@latest 添加。
  • 容器镜像:使用 podman pull ghcr.io/pojntfx/weron 获取 OCI 镜像。
  • 原生二进制文件:从 GitHub Releases 下载静态二进制文件,并按以下步骤安装:
    • Linux:下载并安装,使用 setcap 命令授权无根执行。
    • macOS:下载并安装至 /usr/local/bin
    • Windows:通过 PowerShell 以管理员权限下载并放置于系统目录。

使用教程(核心步骤)

1. 启动信令服务器

信令服务器负责交换节点间连接信息并管理社区。可使用托管服务器 (wss://weron.up.railway.app/) 或自建。

  • 自建服务器可使用内存数据库或推荐用于生产的 Redis 和 PostgreSQL 后端,支持水平扩展。
  • 文中提供了使用 Podman 部署 PostgreSQL、Redis 和信令服务器的详细步骤,包括生成 systemd 服务单元文件及配置防火墙。

2. 管理社区(使用 weron manager

社区分为临时社区(随连接自动创建/删除)和持久社区。通过管理器 CLI 进行管理:

  • 设置环境变量 WERON_RADDRAPI_PASSWORD 连接自建服务器。
  • 使用 weron manager create 创建持久社区,使用 listdelete 命令进行管理。

3. 测试系统(使用 weron chat

聊天工具用于测试网络连通性。通过指定相同社区、密码、加密密钥、用户名和频道,多个节点可加入同一聊天室进行通信。

4. 测量延迟与吞吐量

  • 延迟:使用 weron utility latency 命令。先启动服务器端,再启动客户端测量类似 ping 的延迟。
  • 吞吐量:使用 weron utility throughput 命令。类似 iperf,测量网络带宽。

5. 创建叠加网络

  • 第 3 层(IP)叠加网络 (weron vpn ip)

    • 类似于 Tailscale/WireGuard,创建 IP 层虚拟网络。
    • 可动态或静态从指定的 CIDR 网络(如 2001:db8::1/64,192.0.2.1/24)分配 IP 地址。
    • 启动后,节点可通过分配的 IP 地址相互 ping 通。
    • 注意:Windows 仅支持单 IPv4/IPv6 网络和单 VPN 实例;macOS 仅支持 IPv6。
  • 第 2 层(Ethernet)叠加网络 (weron vpn ethernet)

    • 类似于 n2n 或 ZeroTier,创建以太网层虚拟网络,灵活性更高。
    • 生成 TAP 网络接口,需手动为其分配 IP 地址。
    • 注意:不支持 macOS。

6. 编写自定义协议(使用 wrtcconn 库)

使用 Go API 可轻松构建分布式应用。示例展示了一个简单的 echo 程序核心逻辑:通过适配器接受对等连接并进行读写操作。

命令行参考摘要

weron 提供多种子命令:

  • weron signaler:启动信令服务器,支持 PostgreSQL/Redis 后端、OIDC 认证、临时社区等配置。
  • weron manager:管理信令服务器上的社区(列出、创建、删除)。
  • weron chat:在叠加网络上进行聊天测试。
  • weron utility:包含延迟 (latency) 和吞吐量 (throughput) 测量工具。
  • weron vpn:创建虚拟私有网络。
    • ip:创建第 3 层叠加网络。
    • ethernet:创建第 2 层叠加网络。 所有命令参数均可通过环境变量设置(例如 WERON_MAX_RETRIES)。

致谢与许可

  • 致谢 Font Awesome、songgao/waterpion/webrtc 项目。
  • 许可证:AGPL-3.0。
  • 贡献指南:使用 GitHub Flow 并遵守行为准则,可在 Matrix 上交流。
12. Paint.net (www.getpaint.net)

Paint.NET 是一款面向 Windows 电脑的免费图像和照片编辑软件。

它曾获得 2022年微软商店应用大奖(创意类 - 图形与3D),并受到多家科技媒体(如 Lifehacker、PC World)以及技术专家(如 Stack Overflow 联合创始人 Jeff Atwood)的积极评价。

主要特点:

  • 界面直观创新。
  • 支持图层无限次撤销
  • 提供多种特效强大而实用的工具

背景与发展: 该项目最初作为一个受微软指导的本科生毕业设计启动,旨在成为 Windows 自带“画图”软件的免费替代品。如今,它由 Rick Brewster 维护和开发,已成长为一款功能强大且易于使用的图像编辑工具,其功能常被与 Adobe Photoshop、Corel Paint Shop Pro 等专业软件进行比较。

版本与获取:

  • 最新版本:Paint.NET 5.1.12(2026年3月8日发布)。
  • 支持包括简体中文、繁体中文在内的数十种语言。
  • 用户可从官网免费下载,也可以通过微软商店购买以支持开发。

支持与资源: 拥有一个活跃且不断增长的在线社区,提供友好的帮助、教程和插件。官方还提供了博客、社交媒体账号、教程、插件库、更新日志、常见问题解答及系统要求等信息。

13. The Ken Thompson Hack (wiki.c2.com)

Ken Thompson Hack 文章内容摘要

根据提供的材料,无法对文章《The Ken Thompson Hack》进行实质性总结。原因如下:

  1. 内容缺失:提供的“文章内容”部分仅包含一个图片链接(![](spin.gif))和一行提示文字(This site uses features not available in older browsers.)。这通常表示网页正在加载或某些内容无法在当前条件下显示,而并非文章的正文主体。

  2. 无法提取主旨:由于缺少构成文章主体的文本、叙述、论证或技术细节,无法从中提取关于“Ken Thompson Hack”这一概念的核心论点、历史背景、技术原理或实际案例。

结论:所提供的材料不包含足以生成总结的有效信息。如需获得对该主题的摘要,需要提供文章的实际文本内容。

背景知识补充(仅作参考,非基于所提供材料):在计算机科学和安全领域,“Ken Thompson Hack”通常指代计算机先驱肯·汤普森在1984年图灵奖演讲《Reflections on Trusting Trust》中提出的经典概念。它描述了一种通过修改编译器自身,使其在编译特定程序(例如Unix的登录程序)时自动插入后门的深层攻击方法。这种攻击的特点是,即使审查所有源代码也无法发现恶意代码,因为后门被隐藏在了编译器的编译过程中。

14. Apache Guacamole: a clientless remote desktop gateway (guacamole.apache.org)

Apache Guacamole 是一款无客户端的远程桌面网关,其核心特点如下:

  • 基于HTML5的Web访问:用户通过任何支持HTML5的浏览器即可访问远程计算机,无需安装特定客户端软件,真正实现了随时随地的访问。
  • 支持云桌面部署:通过Guacamole访问的桌面环境可以物理存在,也可以托管在云端。这结合了远程访问的便利性与云计算的弹性与可靠性。
  • 免费开源:该项目基于Apache License 2.0协议,是完全免费且开源的软件,并由活跃的开发社区持续维护。
  • 基于可扩展的API:其核心构建于一套完善的API之上,这些API文档齐全,便于开发者将Guacamole深度集成到其他开源或商业应用程序中。
  • 多元化的支持模式:用户可以通过公共邮件列表获得社区支持,同时也有第三方公司提供专业的商业支持服务。
15. Reported Supply Chain Compromise Affecting XZ Utils Data Compression Library (www.cisa.gov)

美国网络安全与基础设施安全局(CISA)与开源社区正在应对有关XZ Utils数据压缩库5.6.0和5.6.1版本被嵌入恶意代码的报告,该事件已被分配为CVE-2024-3094。XZ Utils是一款常用于Linux发行版的数据压缩软件,受到影响的系统可能会被未经授权访问。

CISA建议开发者和用户将XZ Utils降级至未受影响的版本,例如XZ Utils 5.4.6 Stable,并对恶意活动进行排查,若有发现应及时向CISA报告。同时还提供了Red Hat针对Fedora 41和Rawhide用户的紧急安全警报以供参考。

17. Some notes on Firefox’s media autoplay settings in practice as of Firefox 124 (utcc.utoronto.ca)

文章摘要:关于反爬虫措施的Sec-CH-UA头信息问题

本文作者Chris Siebenmann说明了对其博客"Wandering Thoughts"和关联wiki CSpace实施的反爬虫措施。措施基于HTTP请求头中的Sec-CH-UA-*(如Sec-CH-UA-PlatformSec-CH-UA)来识别可疑访问。当浏览器或客户端库声称是Chrome等主流浏览器,但发送的头信息不一致时,会被阻止访问。

背景原因

  • 滥用爬虫问题:高流量爬虫使用伪造的User-Agent值,可能用于大型语言模型(LLM)训练,导致安全风险。
  • 措施必要性:为应对这种反社会行为,作者拒绝接受头信息与User-Agent不匹配的访问。

被阻止的情况

  • 浏览器或客户端库发送的Sec-CH-UA-*头信息与其声称的浏览器身份不符。
  • 作者不会为伪装成Chrome的软件提供豁免,尤其是当User-Agent难以区分合法浏览器时。

具体可疑问题

以下情况可能导致访问被阻止:

  1. 缺失头信息:在应支持Sec-CH-UA头的Chrome版本中未发送,即使因隐私扩展禁用也不被接受。
  2. 平台不匹配Sec-CH-UA-Platform头与User-Agent中的平台信息不一致。
  3. 版本不匹配Sec-CH-UA头中的品牌版本号(如Chromium版本)与User-Agent中的Chrome/版本不符。
  4. Headless Chrome:头信息表明使用无头模式Chrome,这常被爬虫利用。

用户应对方式

  • 如果错误阻止,用户可通过作者所在大学的电子邮件地址联系,提供浏览器详情(如User-Agent字符串)。
  • 建议使用Chrome的Web开发者工具验证发送的Sec-CH-UA头信息。

结论

作者强调,措施旨在对抗恶意爬虫,保障网站安全。日期:2025-12-20。

19. Can Demis Hassabis save Google? (www.bigtechnology.com)

文章摘要:Demis Hassabis能否拯救谷歌?

核心人物

Demis Hassabis是DeepMind创始人,神经科学家与人工智能研究者。他从小对AI产生兴趣,拥有计算机科学和神经科学背景,领导团队在AI领域取得多项突破性成就。

谷歌的现状与挑战

  • 业务表现强劲:谷歌核心业务(搜索、邮箱等)收入持续增长,但面临AI竞争压力。
  • AI竞赛落后:在生成式AI(如大语言模型)方面落后于OpenAI的ChatGPT,部分原因是内部团队(DeepMind与Google Brain)协作不足,且对生成式模型重视不够。
  • 组织问题:谷歌官僚文化可能阻碍AI创新与产品化,近期Gemini图像生成事件暴露了协调与执行问题。

DeepMind的成就与Hassabis的角色

  • 关键突破:AlphaGo(围棋AI)、AlphaFold(蛋白质结构预测)等。
  • 合并后的领导:谷歌将DeepMind与Google Brain合并为Google DeepMind,由Hassabis领导,整合计算资源与研究力量。
  • 新方向:专注于AI代理(agent)系统,认为这是实现通用人工智能(AGI)的关键路径。

未来方向与挑战

  • 产品化任务:需将前沿AI研究转化为实际产品改进,同时保护核心广告业务。
  • 技术目标:开发更可靠的AI助手,解决幻觉问题,并推进代理技术(如自动执行任务)。
  • 组织障碍:需说服保守的产品团队接受激进变革,克服内部官僚主义。

Hassabis的定位

  • 他更专注于研究而非管理,但致力于推动AI与产品深度融合。
  • 尽管外界有其接任谷歌CEO的呼声,但他表示当前重心仍在科研与技术创新上。
20. XZ Utils Backdoor (tukaani.org)

XZ Utils 后门事件摘要

核心事件

  • CVE-2024-3094:XZ Utils 5.6.0 和 5.6.1 版本的发布压缩包中包含后门。
  • 这些压缩包由 Jia Tan 创建并签名。原维护者 Larhzu 声明,任何由他签名的压缩包均由他本人创建。

账户与权限

  • Larhzu 和 Jia Tan 的 GitHub 账户均被暂停。Larhzu 的账户于 2024-04-02 恢复。
  • 访问权限:只有 Larhzu 拥有访问主站 tukaani.orggit.tukaani.org 仓库及相关文件的权限。Jia Tan 仅能访问托管在 GitHub 上的内容,包括 xz.tukaani.org 子域名。

事件处理与后续措施

  1. 项目迁移:XZ 项目已迁移回 tukaani.org 的旧网址。
  2. 域名与邮箱
    • xz.tukaani.org 的 DNS (CNAME) 已移除且不会恢复。
    • 2024-03-30 起,发往 xz@tukaani.org 的邮件不再转发至 Jia Tan。
  3. GitHub 仓库状态
    • 2024-04-09:XZ 项目的 Git 仓库在 GitHub 上恢复访问,建议从 GitHub 下载代码以减少主站带宽压力。
    • 异常情况:GitHub 于 2024-04-05 关闭了所有拉取请求,并将操作错误地归因于 Larhzu。Larhzu 尝试在 2024-04-12 重新打开,但 GitHub 再次立即关闭。这可能是由于请求指向了被禁用的仓库分支。
    • Larhzu 确认未对 GitHub 上的 masterv5.x 分支进行强制推送,也未对 git.tukaani.org 进行强制推送。
    • 例外:Larhzu 于 2024-04-05 在 GitHub 的 xz-java 仓库上强制推送,删除了 Jia Tan 的两个无害提交。这是因为当时 GitHub 仓库被禁用,而本地仓库没有 Jia 的这两个提交。
  4. 审查与发布
    • XZ Utils 审查笔记 1.0 版于 2024-05-29 发布。
    • 同日发布了新的、干净的 XZ Utils 版本,项目主页也重新上线。

后续计划

  • Git 仓库处理:曾考虑变基 master 分支以清除恶意文件(等同于丢弃八个提交),但最终决定不变基。其他仓库(xz-embeddedxz-java)确认安全。
  • 版本发布:原计划可能跳过 5.6.x 版本号直接发布 5.8.0,但最终选择发布 XZ Utils 5.6.2 作为清理步骤。计划中的少量改进可能更快地推出 5.8.0 版本,以替代 5.6.x 系列。
  • 经验总结:作者正在撰写一篇关于后门如何进入发布版本以及可吸取教训的文章,但完成时间尚不确定。

其他说明

  • 作者目前不回复邮件和评论。
  • 已开通 Liberapay 捐赠账户,但根据芬兰法律,不接受来自芬兰居民或居住在芬兰的人的捐赠。
21. Linear Algebra of Types (2019) (www.philipzucker.com)

本文探讨了将类型系统与线性代数概念相结合的思路。核心观点是,类型系统可以构成一个半环,其中 Either 类型对应加法,元组 (,) 对应乘法。它们虽不严格满足分配律和结合律,但在同构意义上近似成立。

基于此,作者提出可以将类型作为矩阵的元素进行运算,使用上述 Either 和元组作为半环的加法和乘法。文章提供了 Haskell 代码示例,通过类型族实现了类型层面的向量点积、矩阵-向量乘法、矩阵转置和矩阵乘法等操作。

这种构造的意义在于,类型矩阵可以精确描述状态转移系统。矩阵的每个元素可以表示从一个状态到另一个状态的某种关系(如成本、计数、连通性、概率等)。矩阵乘法则对应多步转移。当矩阵元素为类型时,结果类型能精确表示所有可能的转移路径序列。作者以一个在“家”和“工作”之间选择活动的简化转移系统为例,演示了如何通过类型矩阵的连乘来描述所有可能的4小时日程安排。

作者指出,这种类型矩阵的表示并非处理此类问题的唯一或最佳方式,使用 GADT 或带步数参数的类型也是有效替代方案。但文章的最终目标是提出一个更深层的想法:将此构造提升至向量空间的层面,考虑空间的直接和与克罗内克积。这进一步关联到更高级的数学概念(如 2-vector spaces),并暗示类型函数式编程可能是探索这些数学结构的良好平台。文末还补充了相关的数学参考资料。

22. Launch HN: Lumona (YC W24) – Product search based on Reddit and YouTube reviews
23. We are under DDoS attack and we do nothing (tableplus.com)

TablePlus遭受DDoS攻击及应对策略

攻击情况

  • TablePlus持续数周遭受DDoS攻击,攻击者发送数亿次请求,重点针对其设置文件(约200MB/次)的下载尝试。
  • 最近5天内尝试下载超过800,000次,30天内约600万次;攻击流量主要来自欧盟(德国和英国)。
  • 攻击在撰写本文时仍在进行。

应对措施

  • TablePlus未采取任何主动防御措施:未阻止攻击者IP地址,未激活Cloudflare的“Under Attack”模式。
  • 服务器CPU使用率极低(通常为0-1%),整体处理几乎无影响。

原因分析

  • 服务架构设计简单,后端服务极简,避免使用第三方渲染服务(如Vercel或Netlify)以防止瓶颈和意外账单。
  • 拥有8个API服务及其数据库,均可在不依赖缓存的情况下处理每月数十亿次请求。
  • 使用Cloudflare提供无限带宽,成本可控。
  • 现代VPS硬件(多核处理器、高内存、快速SSD)使单体架构能高效处理海量请求。

架构与部署实践

  • 单体架构:每个应用构建为单一服务,集成API、网站、邮件、支付等功能;部署简单,仅需一个配置文件和二进制文件。
  • 部署方式:使用预编译二进制文件,无需Docker、Kubernetes或运行时环境;通过Linux Systemctl管理进程,原生运行以优化性能。
  • 技术栈:选择Golang或Rust等高性能语言及框架(如Echo、Gin、Actix),以生成高效二进制文件。

从攻击中学到的建议

  • 选择高性能框架,并为数据库添加索引以提升查询效率。
  • 分离主数据库(数据稳定)与日志/数据库(数据增长),避免性能瓶颈。
  • 使用反向代理(如Nginx)分发请求,便于多服务器扩展。
  • 将服务置于Cloudflare后,正确配置缓存、Argo和SSL;优先使用带DDoS保护的CDN(如Cloudflare R2)。
  • 避免在VPS上直接托管大文件而不使用CDN或缓存,以防带宽耗尽。
  • 对邮件功能(如忘记密码)实施节流保护。

更新说明

  • Vercel已澄清其提供类似防护功能,包括支出管理和攻击挑战模式(类似Cloudflare的“Under Attack”模式),建议用户启用这些功能以增强保护。
25. Proteins let cells remember how well their last division went (arstechnica.com)

细胞记忆机制:“有丝分裂秒表”让子细胞记住母细胞的分裂困境

核心发现: 细胞拥有一个“有丝分裂秒表”系统,能够记住其亲代细胞在分裂过程中遇到的问题。当有丝分裂(染色体分离阶段)耗时过长时,可能暗示染色体已受损。如果分裂时间显著延长,由此产生的两个子细胞将可能停止进一步分裂。

机制详解:

  1. 记忆形成: 在有丝分裂期间,如果分裂过程缓慢,一个由三种蛋白质(肿瘤抑制蛋白p53、泛素特异性蛋白酶28和p53结合蛋白1)组成的复合物会逐渐积累。
  2. 稳定与传递: 该蛋白质复合物一旦形成则保持稳定,并能在细胞分裂完成后传递给两个子细胞。
  3. 关键调控因子: 该过程依赖于一种特定的激酶PLK1。PLK1通过磷酸化作用缓慢地修饰复合物中的蛋白质,从而调控复合物的形成。如果抑制PLK1,该“秒表”机制将无法工作。
  4. 触发效应: 积累的蛋白质复合物有助于稳定p53蛋白。当复合物水平足够高时,p53将被激活,进而阻断子细胞未来的分裂。

与癌症的关联:

  • 复合物中的所有三种蛋白质均为已知的肿瘤抑制因子。
  • 研究人员在肿瘤样本中发现,该“有丝分裂秒表”系统经常出现缺陷,表明该机制的失活可能增加肿瘤形成的风险。

研究背景与意义:

  • 此项发现最初于视网膜细胞中观察到,但最新研究证明这是一种普遍存在的细胞反应。
  • “有丝分裂秒表”是细胞众多记忆存储系统中的一种,专门应对分裂异常。p53蛋白同时还整合了来自其他多种通路的信号,表明细胞内存在复杂且相互关联的监控网络。
26. Debian on xz-utils: revert to version that does not contain changes by bad actor (bugs.debian.org)

Debian 回滚 xz-utils 版本以清除恶意更改

Debian 项目决定将 xz-utils 工具回滚到之前的安全版本,以避免包含由恶意行为者引入的更改。这一举措旨在确保软件的安全性和可靠性。文章内容中包含一句 "I Challenge Thee",可能反映了事件中的挑战或紧张氛围,但未提供更多上下文细节。

27. When will the eclipse happen? A multimillennium tale of computation (writings.stephenwolfram.com)

日食预测:跨越千年的计算史诗

核心概述

日食预测是精确科学历史上的重大成就,从古巴比伦的观测记录到现代超级计算机的数值模拟,人类逐步将预测精度从数小时提升至秒级。这一过程融合了天文学、数学和计算技术的漫长演进。

历史演进脉络

1. 古代观测与周期发现(公元前400年-公元150年)

  • 巴比伦文明:通过数百年系统观测,发现日月运动的三个关键周期:
    • 朔望月(约29.53天):月相同步周期
    • 近点月(约27.55天):月球轨道近地点周期
    • 交点月(约27.21天):月球穿越黄道面的周期
  • 沙罗周期(约18年11天):公元前400年左右发现这三个周期(223、239、242个月)近似对齐,使得日食条件可周期性重复
  • 安提基特拉机械(约公元前100年):使用37个齿轮模拟日月运动,能预测日食发生

2. 古典天文学与几何模型(公元150年-17世纪)

  • 托勒密体系(约150年):在《天文学大成》中建立完整的日月运动几何模型,使用本轮-均轮系统预测日食
  • 第谷·布拉赫(1560年代):通过精密观测将月球位置预测精度提高约5倍
  • 开普勒(1627年):在《鲁道夫星表》中引入椭圆轨道概念,显著改进日食预测

3. 牛顿力学与三体问题(1687年-19世纪)

  • 牛顿万有引力定律(1687年):首次从基本原理推导月球运动,但实际计算遇到严重困难
  • 三体问题挑战:日-地-月系统的相互引力作用导致月球轨道极其复杂,无法用简单闭合公式表达
  • 数学工具发展
    • 欧拉(1740s):引入三角级数方法
    • 拉格朗日和拉普拉斯(1770s):发展摄动理论
    • 德洛内(1860s):耗时20年完成约1800页的符号计算,但数值收敛性差

4. 现代数值计算方法(20世纪至今)

  • 布朗的月球表(1918年):包含约1400个三角项,长期用作航海历基准
  • 计算机时代
    • 1932年:首次使用打孔卡计算机处理月球表
    • 1960s:NASA直接数值求解微分方程
    • 1980s:现代星历表开始整合激光测距数据
  • 当前方法:JPL星历表(如DE441)通过求解包含主要行星摄动的N体问题,结合实时观测数据更新

2024年日食的预测原理

计算流程

  1. 基础星历:使用JPL DE441等星历表获取日、月、地精确位置
  2. 相对论修正
    • 光传播延迟(太阳光需约8分钟到达地球)
    • 引力时间膨胀效应
  3. 坐标转换
    • 天体力学坐标到地表坐标的转换
    • 考虑地球自转和地形高度影响
  4. 阴影几何计算
    • 本影锥与地球表面的交线确定全食带
    • 半影区域计算偏食范围
  5. 时间系统对齐
    • 原子时(UTC)与天文时(UT1)的闰秒协调
    • 观测点海拔导致的时间延迟(每1000英尺约0.3秒)

精度限制因素

  • 贝利珠效应:月球地形导致的边缘光线变化,可使全食带边缘移动约1英里
  • 日冕动态:太阳外层大气的瞬时变化
  • 测量不确定性:尽管激光测距精度达毫米级,但初始条件误差仍会累积

实现的技术突破

  • 算法进步:从级数展开到现代自适应数值积分
  • 计算能力:能够实时处理包含主要行星摄动的N体问题
  • 数据融合:结合历史观测、激光测距、深空探测数据持续优化模型
  • 最终精度:现代预测可达秒级精度,尽管阴影移动速度超过1000英里/小时

科学意义

日食预测史展示了人类通过数学和计算逐步逼近自然真相的过程。从古代周期发现到现代数值求解,这一历程体现了计算思维在科学中的核心作用——某些系统(如三体问题)可能存在计算不可约性,但仍可通过足够强大的计算获得实用精度。

2024年4月8日日食

基于上述方法,Wolfram研究团队创建了precisioneclipse.com网站,允许用户输入地理位置后实时计算日食到达时间,验证了现代科学在秒级精度上预测天文事件的能力。

28. Full-scale file system acceleration on GPU [pdf] (dl.gi.de)

全规模GPU文件系统加速

研究动机与核心思想

现代高性能计算和人工智能应用主要依赖GPU提供算力,但其存储操作需经CPU处理,造成显著瓶颈。传统架构中,每次存储请求都需通过互连传输至CPU,经由文件系统层处理后再返回GPU,引入了不必要的延迟。本文提出GPU4FS,一种激进的解决方案:将完整的文件系统实现迁移至GPU端运行,从而消除CPU干预和互连延迟,释放CPU用于其他任务。

设计与方法

接口设计

  • 兼容性与优化接口:提供两套命令接口。一套紧随POSIX规范,确保对传统CPU应用的兼容性;另一套为高级接口(如原子化文件加载),通过减少操作次数来降低延迟和提升带宽。
  • 通信机制:由于GPU缺乏系统调用指令,采用共享内存缓冲区(位于VRAM或DRAM)进行进程间通信。GPU应用通过VRAM缓冲区提交命令,CPU应用则通过DRAM缓冲区访问。
  • mmap支持:为支持内存映射文件访问,引入了一种仅在取消映射时才将数据回写存储的写回模式,避免了频繁的页表修改开销。

GPU端实现

  • 进程架构:包含至少两个进程——GPU侧的GPU4FS主进程负责处理整个文件系统,CPU侧进程负责初始化通信和映射页表。文件系统的管理任务(如垃圾收集、碎片整理)均在GPU上执行。
  • 读写流程
    • 读请求:先检查VRAM/DRAM缓存,若未命中则通过直接映射(PMem)或P2P-DMA(NVMe)从存储加载数据。利用缓存提示机制优化存储管理。
    • 写请求:采用日志结构方式写入数据,并用日志记录元数据更新,以确保一致性。日志区域被划分为子区域并分配给不同的GPU工作组,以并行化日志操作。
  • 存储优化:针对支持直接映射的现代存储(如PMem)设计,采用支持多级页大小(4KiB/2MiB/1GiB)的指针,减少间接块和指针开销,利于GPU内存合并。采用扁平地址空间,并使用部分碎片整理和垃圾回收重用空间。
  • 附加特性:集成了校验和(使用并行友好的BLAKE3)、数据去重和软件RAID(受BTRFS启发,支持运行时可配置的RAID级别)等现代文件系统功能。

CPU端实现

  • 角色:主要负责建立GPU4FS进程与客户端(无论CPU或GPU)之间的通信链接,包括分配共享缓冲区和执行必要的页表修改(需内核权限)。
  • 用户空间文件系统:在正常文件系统访问中,操作完全绕过内核,使GPU4FS成为一个用户空间文件系统,具备性能提升潜力。仅需少量内核模块修改以支持跨进程的页映射。

初步结果与评估

作者在Vulkan/RADV驱动上实现了初步演示系统,并测试了向Intel Optane PMem写入的性能:

  • 带宽:在单条Optane DIMM上实现了最大1.5 GB/s的写入带宽,接近CPU下的2 GB/s。当文件大小达到128 MiB时,带宽达到峰值,表明文件系统实现本身未引入固有开销。
  • 元数据操作:在目录链创建测试中,GPU4FS性能与CPU(使用EXT4)相近。虽然绝对延迟略高,但可通过高级接口将多个系统调用合并为单次GPU命令。
  • 当前限制:测试包含约12ms的启动延迟(因驱动和缓冲区初始化),且性能未完全优化(使用游戏优化的RADV驱动而非计算优化的ROCm)。

相关工作对比

  • 与GPUfs的区别:GPUfs仅为GPU提供了访问CPU侧文件系统的接口,而GPU4FS将整个文件系统实现移至GPU,并允许CPU访问GPU上的文件系统。
  • 与用户空间文件系统:如Aerie、Strata等虽运行在用户空间CPU,但未针对GPU并行性优化。GPU4FS专为提取文件系统操作的并行性而设计。
  • 与部分加速工作:以往工作仅将文件系统的部分功能(如RAID、校验和、加密)卸载到加速器,而GPU4FS将其集成为一个完整的GPU文件系统。

结论与未来工作

GPU4FS的设计证明了全功能GPU端文件系统的可行性,其带宽受限于存储介质而非文件系统本身。未来工作包括:迁移到AMD ROCm计算平台以优化性能、实现完整的数据一致性机制、完善分配与垃圾回收策略,以及集成全部计划特性。