2024 04 01 HackerNews

2024-04-01 Hacker News Top Stories #

一句话摘要 #

  1. XZ backdoor: “It’s RCE, not auth bypass, and gated/unreplayable.” 文章分析了xz压缩工具中的后门问题,指出这是一个远程代码执行(RCE)漏洞,而非身份验证绕过,且具有一定的门槛和不可重放性。
  2. Xz: A microcosm of the interactions in open source projects 博文探讨了开源项目中维护者与消费者的互动模式,通过xz/liblzma漏洞事件揭示了开源社区中存在的问题和挑战。
  3. Xz/liblzma: Bash-stage Obfuscation Explained 文章详细解释了在xz/liblzma中发现的后门问题,以及其在bash脚本中使用的多阶段混淆技术。
  4. Roll-Invert-Unroll: An easier way to replace a duvet cover 文章介绍了一种名为“Roll-Invert-Unroll”的简单技巧,用以改进更换被套的过程,使其更加快捷和简便。
  5. Guess my RGB 页面提供了一个互动工具“Guess My RGB”,让用户通过调整滑块来猜测背景颜色,同时提供了GitHub和Mastodon的链接。
  6. Meta’s Onavo VPN removed SSL encryption of competitor’s analytics traffic 文件揭露了Meta公司通过其Onavo VPN应用移除竞争对手分析流量的SSL加密,涉嫌违法行为。
  7. Shutting down the letsblock.it project and its official instance 讨论了letsblock.it项目的关闭决定,该项目旨在帮助用户过滤网络上的低质量内容,提升在线体验。
  8. Running OCR against PDFs and images directly in the browser 文章介绍了一种在浏览器中直接对PDF和图像文件进行光学字符识别(OCR)的新工具,强调了用户数据的隐私保护。
  9. Notes on El Salvador 文章详细记述了萨尔瓦多的历史和犯罪现状,讨论了该国如何从世界最高的谋杀率降至一个相对较低的水平。
  10. Git as a debugging tool 博文讲述了如何使用Git的各种功能作为调试工具,包括Git Grep、Git Blame、Git Log和Git Bisect等,以提高代码调试的效率。

XZ backdoor: “It’s RCE, not auth bypass, and gated/unreplayable.” #

https://bsky.app/profile/filippo.abyssdomain.expert/post/3kowjkx2njy2b

这篇文章是关于 Filippo Valsorda 观察一些人逆向工程了 xz 后门,他分享了一些初步分析,并获得了许可。文章提到,hooked RSA_public_decrypt 通过固定的 Ed448 密钥验证服务器主机密钥上的签名,然后将有效载荷传递给 system()。这是一种远程代码执行(RCE),而不是身份验证绕过,并且是有门槛/不可重放的。

Filippo Valsorda 还提到这可能是我们在公开描述的最好执行的供应链攻击,是一个噩梦场景:恶意、有能力的、在广泛使用的库中被授权的上游。看起来这是偶然发现的。他还讨论了从 N 值(公钥)中提取有效载荷,通过简单指纹检查,并在 Ed448 签名验证之前用固定的 ChaCha20 密钥解密的情况。

此外,他还提到 RSA_public_decrypt 是一个(奇怪命名的)签名验证函数,公钥可以在预身份验证时由攻击者控制,使用 OpenSSH 证书。如果有效载荷格式不正确或来自攻击者密钥的签名无法验证,后门将恢复到常规操作。这意味着除非发现漏洞,否则无法编写可靠/可重用的网络扫描器。


HN 评论 765 comments | 作者:junon | 1 day ago #

https://news.ycombinator.com/item?id=39877267

这篇帖子中的评论观点大致可归为以下几类:

  • 讨论了 XZ 后门的远程代码执行(RCE)问题,认为这是一个严重的安全漏洞,可能导致特权升级;
  • 讨论了使用 SELinux 等技术进行沙盒化的可能性,但指出在 SSH 守护程序中实施沙盒化难度较大;
  • 提出了软件多样性的概念,认为关键系统组件应该独立开发,以提高安全性;
  • 讨论了系统中的库依赖问题,特别是与 liblzma 相关的争议;
  • 探讨了如何防止恶意库篡改函数的可能性,包括硬件保护等方案。

Xz: A microcosm of the interactions in open source projects #

https://robmensching.com/blog/posts/2024/03/30/a-microcosm-of-the-interactions-in-open-source-projects/

这篇博文讨论了关于开源项目中互动的微观视角。文章最初是关于 xz/liblzma 漏洞的 Twitter 线索,但作者在撰写时意识到这是一个值得更多关注的开源互动实例。文章指出大多数分析都忽略了攻击的第一步骤:原维护者疲劳,只有攻击者提出帮助(因此攻击者继承了原维护者建立的信任)。作者引用了一封电子邮件线程,捕捉了这一过程发生时的情况。

在电子邮件线程中,最初是一个合理的请求,但维护者承认自己“落后”并且难以跟进。一个名为 Jia Tan 的人提出帮助,但实际上并不是请求者所期望的帮助。随后,一些不太有帮助的消费者发表了不太有益的言论,指责维护者失去兴趣。维护者试图为自己辩护,解释自己的精神健康问题和项目的无偿性质。最终,消费者们继续提出要求,但却没有提供实际帮助,只有攻击者留了下来,并可能在未来扮演更重要的角色。

这篇文章展示了开源项目中的互动模式,消费者提出需求,维护者必须应对。文章强调了这种模式的必要性改变。作者呼吁对开源项目中的互动方式进行反思。


HN 评论 301 comments | 作者:transpute | 23 hours ago #

https://news.ycombinator.com/item?id=39879710

这篇帖子中的评论观点归纳如下:

  • 与用户友好并试图看待评论者最好意图可能会浪费大量精力;
  • 与贡献者互动有益,但与“花生观众”互动通常是无益的;
  • 忽略不合理的建议是必要的,要有清晰的拒绝方式;
  • 保持开放社区可能不利于长远发展;
  • 项目维护者应设定明确边界,拒绝不合理要求;
  • 与社区互动需要平衡,以避免耗费过多时间和精力。

Xz/liblzma: Bash-stage Obfuscation Explained #

https://gynvael.coldwind.pl/?lang=en&id=782

这个链接内容主要是关于一个名为“xz/liblzma: Bash-stage Obfuscation Explained”的主题。

文章讨论了在 xz/liblzma 中发现的后门问题,影响了 OpenSSH 服务器。文章详细解释了在 bash 中的几个阶段中使用的简单但巧妙的混淆方法。文章提到了两个受影响的版本 5.6.0 和 5.6.1,并解释了它们之间的区别。

文章描述了从 bash 阶段 0 到阶段 2 的整个过程,包括代码示例和解释。阐述了在不同阶段中使用的技术,如字符映射、ASCII 码范围、tr 命令等。文章还提到了在 bash 文件中发现的后门以及如何提取和执行这些后门的过程。

此外,还介绍了在阶段 2 中的扩展机制和后门提取过程。文章以详细的方式解释了整个过程,包括代码片段和技术细节。


HN 评论 105 comments | 作者:ecliptik | 1 day ago #

https://news.ycombinator.com/item?id=39878681

评论中的观点归纳如下:

  • 对于发现的后门问题,人们担心还有多少未被发现的问题存在;
  • 有人认为可能存在多个类似问题,但并不一定都是关键问题;
  • 有人对解释和噪音图像比较表示感谢,认为能更好理解复杂性;
  • 有人讨厌编写编译/构建时的条件代码,认为很难测试是否启用或禁用;
  • 有人认为后门设计中的点可能是错误而非故意;
  • 有人提到了构建系统中的复杂性和自动生成的脚本;
  • 有人讨论了代码审查和合并过程中的问题,包括恶意代码的潜入和测试资源被链接到最终构建中的设计缺陷;
  • 有人提到了构建系统的复杂性超出人类理解能力的问题。

Roll-Invert-Unroll: An easier way to replace a duvet cover #

https://danverbraganza.com/writings/an-easier-way-to-replace-a-duvet-cover

这篇文章介绍了一种更简单的方法来更换被套,作者分享了一个名为“Roll-Invert-Unroll”的技巧,可以帮助你在几分钟内更换被套,而无需拼命摇晃被子。

作者描述了更换被套的难点,以及如何使用“Roll-Invert-Unroll”这一方法来轻松更换被套。具体步骤包括准备被套和被子、将被子和被套一起卷起、将被套倒置覆盖在整个卷上,最后展开被套。

这种方法不仅节省时间和精力,还能减少更换被套时的挫败感,让整个过程更加愉快。作者希望读者尝试这种更换被套的方法,并发现它的实用性。


HN 评论 249 comments | 作者:nvader | 1 day ago #

https://news.ycombinator.com/item?id=39877730

这篇帖子中评论的观点归纳如下:

有人认为从内部开始换被套更方便;

有人觉得直接把被子套进去再摇晃就行;

还有人提到家务技巧书籍推荐;

有人分享了自己的折叠被单经验;

还有人讨论了被子的历史和文化背景;

另外,有人分享了视频教程链接。


Guess my RGB #

https://susam.net/myrgb.html

页面上展示了一个名为"Guess My RGB"的小工具,其中包含了 0 到 F 的数字和 R、G、B 的字母。

用户可以通过移动上方的滑块来猜测背景的 RGB 颜色。此外,页面还提供了 GitHub 和 Mastodon 的链接。


HN 评论 119 comments | 作者:talonx | 16 hours ago #

https://news.ycombinator.com/item?id=39882018

这篇帖子中的评论观点归纳如下:

一些评论提到了优化猜测颜色的策略,包括使用 Hillclimbing 算法和最小化方差的方法;

另一些评论讨论了使用三角测量和金分割搜索等方法来提高猜测效率;

还有评论提到了使用 HSL 颜色空间更直观,以及对颜色进行描述和猜测的有趣讨论。


Meta’s Onavo VPN removed SSL encryption of competitor’s analytics traffic #

https://www.documentcloud.org/documents/24520332-merged-fb

这份文件是关于一起 Facebook/Meta 平台的集体诉讼发现的内容。

文件提到了广告商原告请求法院认定存在一项犯罪欺诈例外情况,要求 Facebook 公司提供有关其所谓的 In-App Action Panel(IAAP)计划的通信,该计划于 2016 年 6 月至 2019 年 5 月左右存在。IAAP 计划是在 Mark Zuckerberg 的要求下启动的,使用一种名为“SSL 中间人攻击”的网络攻击方法来拦截和解密 Snapchat、后来是 YouTube 和 Amazon 的 SSL 保护的分析流量,以影响 Facebook 的竞争决策。

文件指出,Facebook 的 IAAP 计划行为不仅是反竞争的,而且是违法的,违反了美国法典第 18 节 2511(a)和(d)条所谓的“窃听法”,没有适用的例外情况。Facebook 的律师在该计划的设计、执行和扩展中起着普遍作用。原告在 2023 年 5 月 15 日向 Facebook 发送了一封长达 19 页的单行间隔信函,提供了截图、文件引用和证据引用,详细描述了公司的相关行为;并根据美国法典第 18 节 2511 等法律和第九巡回法院的犯罪欺诈测试对该行为进行了分析,并寻求快速会面和商讨。

在接下来的两周里,原告发送了额外的信函和电子邮件。双方于 5 月 31 日会面并商讨,但未能达成一致。文件还详细描述了 Facebook 的 IAAP 计划如何以窃听竞争对手的方式来影响竞争。


HN 评论 146 comments | 作者:wordhydrogen | 16 hours ago #

https://news.ycombinator.com/item?id=39881962

这篇帖子中的评论观点归纳如下:

1)关于 Meta 的行为是否违法,涉及到用户同意和隐私问题;

2)一些人认为类似行为是对隐私的侵犯,类比于窃听邮件;

3)对于类似行为,有人认为用户同意参与测试,但是否真正知情存在疑问;

4)有人认为这种行为更像是反竞争行为,而非隐私问题;

5)关于 Meta 的行为,一些人认为其历史充满争议,甚至被称为邪恶在线帝国;

6)还有人提到其他公司类似的行为,如 Cloudflare 的 SSL 终止。


Shutting down the letsblock.it project and its official instance #

https://github.com/letsblockit/letsblockit/discussions/663

这个讨论是关于关闭 letsblock.it 项目及其官方实例的。letsblock.it 项目旨在帮助用户消除低质量内容和无用的提示,以定制他们的在线体验并专注于重要内容。该项目已经运行了两年多,其官方实例目前每天为 800 多名活跃用户和数百名匿名访客提供服务。项目的创始人表示,商业网络的用户敌对设计已成常态,大型科技公司致力于从社会中获取尽可能多的利润,而广告公司 Google 继续努力剥夺人们对浏览器的控制权。因此,他决定关闭 letsblock.it 项目,将精力转向支持尊重用户并重视用户意见的社区和应用程序。

官方实例将于 2024 年 6 月底关闭,数据库中包含个人信息,将在用户有机会迁出后销毁。在此期间将进行有限的维护以确保安全,但规则将不再修复或更新。如果一组用户希望继续这些努力,创始人将支持他们分叉该项目并建立新服务器。项目的临时时间表包括 2024 年 3 月官方公告,4 月允许用户迁出,6 月关闭官方实例并存档项目。

创始人感谢所有为项目做出贡献的人,并表示关闭项目是为了给用户一个受控的关闭,而不是让项目停滞不前。他强调这不是招募贡献者或新维护者的呼吁,如果用户想继承该项目的遗产,他希望以新名称进行,以避免混淆。


HN 评论 102 comments | 作者:imbnwa | 11 hours ago #

https://news.ycombinator.com/item?id=39883328

  • 有人赞赏项目即使“失败”也制定了合理的退出计划。
  • 过滤亚马逊产品名称似乎徒劳,但能过滤 YouTube 短视频。
  • Ublock origin 的过滤语法很好,但存在限制,难以过滤某些元素,也很脆弱。
  • YouTube 强制推送短视频给喜欢长视频的用户令人沮丧。
  • 对 YouTube 短视频的过滤模板有替代方案。
  • 希望 YouTube 提供专注模式,只观看订阅内容。
  • 有人感到难过项目关闭,因为它有效地过滤了搜索结果中的垃圾内容。
  • 有人认为现代网络对用户不友好,浏览器应该提供更多控制权。
  • 有人认为项目鼓励用户继续与对用户不友好的大型科技公司互动。
  • 有人认为项目运行两年并拥有 800 活跃用户是成功的。

Running OCR against PDFs and images directly in the browser #

https://simonwillison.net/2024/Mar/30/ocr-pdfs-images/

这篇文章介绍了作者在参加斯坦福大学举办的 Story Discovery At Scale 数据新闻会议时的经历。在任何新闻会议上,数据提取都是一个永恒的热门话题:如何最好地从 PDF 和图像中提取数据?

作者提到了一些工具,如 Gemini Pro 1.5、Claude 3 和 GPT-4 Vision,但这些工具对大多数人来说仍然不太方便。作者回想起 Tesseract 现在可以在浏览器中运行,这得益于出色的 Tesseract.js 项目。此外,由于 Mozilla 的 PDF.js 库非常成熟和经过充分测试,因此 JavaScript 也可以处理 PDF。

于是作者构建了一个新工具!该工具在 tools.simonwillison.net/ocr 提供了一个单页面 Web 应用程序,可以对在应用程序中打开的图像或 PDF 运行 Tesseract OCR。关键是,一切都在浏览器中运行,这里没有服务器组件,也没有上传任何内容。您的图像和文档永远不会离开您的计算机或手机。

文章还提到了作者如何构建这个工具,包括使用的代码示例和工具,以及作者如何通过 Claude 3 Opus 构建了第一个版本。作者还分享了如何使用 LLMs 构建项目的最新示例。整个过程充满乐趣,作者逐步完善了工具,并认为它已经完成了设计任务,不需要继续迭代。


HN 评论 51 comments | 作者:simonw | 1 day ago #

https://news.ycombinator.com/item?id=39877391

  • 有人对文章中使用的 tesseract.js 技术进行了赞赏,认为它是整个应用的核心部分。
  • 有人建议作者更加明确地表明使用了 tesseract.js,并指出不同版本的模型对结果影响很大。
  • 有人提到正在开发一个从 PDF 中提取表格的工具,使用了 PDFplumber Python 库和 Elixir’s Phoenix 框架。
  • 有人分享了一个基于深度学习库的表格提取工具,并计划集成 unitable。
  • 有人提到 Tesseract 在处理表格时表现不佳,缺失部分单元格或无法识别所有数字。
  • 有人讨论了不同的 OCR 工具,包括 FineReader 类似的当前深度学习开源技术。
  • 有人分享了自己使用 tesseract OCR 的经验,用于网站聊天工具的图像和 PDF 文件处理。
  • 有人提到 Safari 和 MacOS 已经具备自动 OCR 功能。
  • 有人分享了使用 LLM 编译工具的经验,称赞 LLM 的便利性和应用前景。
  • 作者确认工具在本地运行,不需要共享信息。

Notes on El Salvador #

https://mattlakeman.org/2024/03/30/notes-on-el-salvador/

这篇关于萨尔瓦多的文章详细介绍了该国的历史和犯罪情况。

文章指出,1995 年,萨尔瓦多的故意杀人率达到每 10 万人 139 人,是世界上最高的之一。然而,随着总统纳伊布·布克莱于 2019 年上任并展开可能是现代历史上最成功的反犯罪打击行动,萨尔瓦多的官方谋杀率在 2023 年降至每 10 万人 2.4 人,与立陶宛、黑山和加拿大等国家的水平相当。

文章还提到了萨尔瓦多的邻国危地马拉和洪都拉斯的犯罪率仍然是其 5-10 倍。文章还介绍了萨尔瓦多的人口、经济数据以及犯罪团伙如 MS-13 和 18 街帮的形成和发展历程。


HN 评论 194 comments | 作者:yorwba | 1 day ago #

https://news.ycombinator.com/item?id=39879432

  • 民主的目的是分散政治决策,并与人民创建基于批准的反馈循环,以选出好的领导者和废除坏的领导者,但独裁集中权力,可能带来更高的风险和回报。
  • 独裁制度使权力基础从“人民”转向少数强大的支持者,而民主制度的权力基础是人民,这更好地调整了权力持有者和普通居民之间的激励和权力动态。
  • 大多数民主国家是代议制民主,政党控制着政治允许的范围,而不是人民直接行使权力。
  • 多数制度倾向于形成两党制,而比例代表制国家更容易创建新政党并上台。
  • 一个合适的独裁者会剥夺所有潜在的挑战者的权力,但也会让他的体制依赖于他,通过残酷镇压维持现状。
  • 民主面临两个主要问题:时间性和内部脆弱性,恶意玩家可以操纵民主机构,将其转变为专制。
  • 美国曾经有一个能够抵御这两种威胁的系统,前提是受过教育和信息充足的选民,大多数人致力于共享的国家价值观。
  • 民主在成功国家中运作良好,但当民主遇到无法处理的危机时,通常会停止成为民主。
  • 许多国家并不真正适合成功的民主,因为他们缺乏维持民主的正确心态和文化。
  • 民主是最好的制度,但实施良好是一项艰巨的任务,需要人们自己努力使之成功。

Git as a debugging tool #

https://lucasoshiro.github.io/posts-en/2023-02-13-git-debug/

这篇博文是关于使用 Git 中的一些工具进行调试的内容。作者介绍了如何利用 Git 中的功能如 Git Grep、Git Blame、Git Log 和 Git Bisect 来进行调试。

作者首先解释了 Git 的基本概念,如提交(commits)、分支(branches)、暂存区(staging area)等。然后介绍了 Pathspec 和 git ls-files 的用法,以及如何使用 Git Grep 来进行代码搜索。Git Grep 可以更好地利用 Git 存储的信息进行搜索,并提供了一些高级功能如显示整个包含搜索结果的函数等。

接着,作者详细介绍了 Git Blame 的用法和局限性,以及如何使用 Git Log 来查找代码引入的变化。作者还介绍了如何使用 Git Bisect 来查找引入 bug 的提交,包括手动和自动两种方式。

最后,作者通过一个实际的例子演示了如何使用 Git Bisect 来定位代码中的 bug。通过这些工具,可以更有效地进行代码调试和问题定位。


HN 评论 69 comments | 作者:lucasoshiro | 1 day ago #

https://news.ycombinator.com/item?id=39877637

  • 有人认为如果只是简单地在 git commit 中随意添加像“修复错误”、“pr 评论”、“ci”之类的无意义信息,会导致在 Git 中进行调试时会遇到困难。
  • 一些人提到他们的工作中每个提交消息都必须包含一个强制性的票号,但这些票号通常没有提供有意义的信息,导致信息不足。
  • 有人建议在提交消息中描述代码更改的原因和解决方案,而不是简单地复制粘贴错误标题。
  • 另一种选择是在重塑提交历史时将其清理为一系列易于遵循的单独提交,然后使用合并提交将分支合并到具有整体更改描述的合并提交中。
  • 一些人提到使用 git commit –fixup {rev}和 git rebase -i –autosquash 更好,因为这样可以将修复放置在最合适的提交中。
  • 有人认为提交应该足够小,以便最终将其合并为单个提交。
  • 有人提到应该编写可读的消息,将提交范围限制在简单更改中,并使用–autosquash。
  • 有人认为合并是将“版本”和“检查点”转换为版本的一种方法,但盲目地将每个分支压缩成一个提交是愚蠢的。
  • 有人提到 git blame 只显示最后一次更改的人,而建议使用 git log -L 来查看一系列行的完整演变。
  • 还有人分享了关于使用 git rebase –exec 和 git rebase –interactive 的技巧。