2025-09-09 Hacker News Top Stories #
Aikido安全团队发现npm上18个流行软件包被入侵,恶意代码可窃取加密货币并操纵用户钱包,建议开发者警惕开源依赖并及时更新。 Dmitry Brant利用Claude Code将25年前的内核驱动程序现代化,使其能在最新Linux内核上运行,解决了内核版本不兼容问题。 Signal推出安全备份功能,支持端到端加密,用户可选择恢复消息历史,目前仅在Android测试版上可用。 Immich是一个高性能的自托管照片和视频管理工具,支持多语言和多平台,目前处于活跃开发阶段。 Pico CSS是一个轻量级、专注于语义化HTML的CSS框架,提供默认响应式设计和多种定制选项,适合小型项目。 讨论代码格式化的必要性,认为代码风格工具可能带来git噪音和潜在错误,建议自动化处理格式问题。 RSS因其简单和开放击败了微软支持的ICE标准,成为内容聚合的主流选择。 文章讨论了防止敏感数据泄露到日志的多层防御策略,包括数据架构、工具使用和多层防御方法。
NPM debug and chalk packages compromised #
https://www.aikido.dev/blog/npm-debug-and-chalk-packages-compromised
2025 年 9 月 8 日,Aikido 安全团队通过其情报系统发现,npm 上 18 个流行的软件包被推送了包含恶意代码的新版本。这些软件包每周下载量超过 20 亿次,包括 backslash
、chalk-template
、supports-hyperlinks
等。这些恶意更新的软件包中包含了一段代码,当在网站客户端执行时,会悄无声息地拦截加密货币和 Web3 活动,操纵钱包交互,并重写支付目的地,将资金和批准重定向到攻击者控制的账户,而用户却毫无察觉。
为了避免受到此类软件包的侵害,Aikido 推荐使用其安全链产品。这些软件包的新版本开始发布后,例如 is-arrayish
,其 index.js
文件被修改并包含了混淆后的代码。经过一些去混淆处理后,代码仍然相当复杂,涉及检查以太坊钱包、执行遮罩函数、本地函数调用等多个步骤,并且包含了多个加密货币钱包地址,用于重定向资金。
这些恶意软件包的发现提醒开发者和用户,需要对依赖的开源软件包保持警惕,及时检查和更新,以防止潜在的安全风险。Aikido 的安全解决方案可以帮助自动化 SOC 2、ISO 等合规性要求,提供全面的漏洞管理,保护代码安全,并生成软件物料清单(SBOM)。
HN 热度 859 points | 评论 450 comments | 作者:universesquid | 7 hours ago #
https://news.ycombinator.com/item?id=45169657
- 作者 junon 承认自己被网络钓鱼攻击,感到尴尬,并提供了受影响的包列表。
- cataflam 认为依赖自己的感官去检查域名或邮件的正确性是不够的,强调不要通过邮件链接登录,使用 U2F/Webauthn 作为第二因素认证。
- winwang 表示,任何人都可能被网络钓鱼,重要的是迅速承认并采取措施减轻损害。
- wer232essf 担心 NPM 的响应速度慢,这可能导致攻击者更有利可图。
- sneak 指出,使用密码管理器和不可被钓鱼的 2FA(如 passkeys)可以避免被网络钓鱼。
- internetter 认为 NPM 在处理这类事情上做得不够好。
- tripplyons 提醒 NPM 现在是微软的一部分,因此没有借口不处理好这类问题。
- joaomoreno 提供了一个命令来检查依赖树中是否包含恶意软件。
- cgijoe 询问是否可以使用普通的 grep 命令代替 ripgrep 来扫描字符串。
- skrebbel 确认可以使用 grep 命令,但 ripgrep 更快。
- nothrabannosir 指出 ripgrep 默认会尊重.gitignore,可能不适合用来扫描 node_modules。
- Fishkins 解释了 ripgrep 命令中的-u 标志的作用。
- AkshatJ27 询问是否应该检查 node_modules 文件夹中的“感染”字符串。
- hinkley 认为对于安全检查,前两个(工作、正确)比三个(快速)更重要。
- Aeolun 表示如果能免费获得第三个(快速),为什么不呢?
- EasyMark 被标记为不当内容。
- naikrovek 认为提供信息的方式可能显得对回复者不够尊重。
- skygazer 认为 HN 不喜欢机器生成的回复,尤其是冗长且过于啰嗦的。
- yifanl 认为在这种背景下要求人们运行随机安装脚本显得不合适。
- hunter2_认为如果使用像 brew 这样的工具,风险足够低,类似于 apt、dnf 等。
- tripplyons 指出任何人都可以上传 NPM 包,而不需要太多审查。
- anthk 认为 APT 仓库需要更多的检查和官僚程序。
- socalgal2 认为不可能所有内容都被检查。
- justusthane 认为 APT 仓库的检查可能并不严格。
Using Claude Code to modernize a 25-year-old kernel driver #
https://dmitrybrant.com/2025/09/07/using-claude-code-to-modernize-a-25-year-old-kernel-driver
Dmitry Brant 的博客文章讲述了他如何利用 Claude Code 来现代化一个已有 25 年历史的内核驱动程序。文章背景是作者对从旧式磁带(如 QIC-80 磁带)中恢复数据的爱好。这些磁带在 1990 年代非常流行,但由于设计上的缺陷,数据恢复存在挑战。作者使用一台装有特定磁带驱动器的旧 PC 工作站,以及一个非常老的 Linux 版本(CentOS 3.5),因为这是使用 ftape 驱动程序的唯一方式,ftape 驱动程序是与磁带驱动器通信所必需的内核驱动程序。
文章提到,读取这些磁带的驱动器连接到主板上的软驱控制器,这是一种节省成本的巧妙做法。然而,这种通信协议非常混乱、非标准化,且支持不佳。ftape 是 Linux 上唯一的开源实现,允许读取磁带的“原始”二进制内容,而不考虑最初写入磁带的专有软件。
ftape 驱动程序自 2000 年左右就不再受支持,并很快从 Linux 内核中移除。作者因此需要运行一个非常旧的 Linux 版本来使用这些驱动器。他希望能在现代发行版上使用 ftape,以获得所有的好处和便利。
几周前,作者向 Claude Code 提出了一个请求,希望将这个驱动程序现代化,使其能够与最新版本的内核一起编译。Claude Code 能够处理编译器输出并将其反馈给自己,直到编译正确。在内核版本 2.4 和 6.8 之间,有许多内核函数和结构被弃用或替换,Claude 找到了所有过时的部分,并用正确的现代等价物替换它们,只需要少量的手动调整。
作者还提到,他希望将内核驱动程序编译为一个独立的可加载内核模块,而不是作为完整内核树的一部分。Claude Code 帮助创建了一个适当的独立构建系统,使得作者能够尝试使用实际的硬件。
尽管模块加载了,但最初并不能正确与磁带驱动器通信。作者手动加载模块,并将 dmesg 的输出粘贴到 Claude 中,Claude 将其与之前保存的成功磁带读取的“已知良好”dmesg 日志进行比较。经过几次迭代,Claude 识别出阻止模块与硬件通信的剩余问题。
最后,作者成功地在现代内核上使用 ftape 驱动程序,这是一个他原本认为无法实现的壮举,最终在两个晚上内完成。作者提醒读者,他有一些内核模块的工作经验和丰富的 C 语言经验,因此不想过分夸大 Claude 在这种情况下的成功。实际上,这不是通过三个提示就得到一个工作的内核模块,而是通过几次来回对话和……
HN 热度 845 points | 评论 282 comments | 作者:dmitrybrant | 23 hours ago #
https://news.ycombinator.com/item?id=45163362
- Claude Code 作为工具可以极大提升个人技能的效率。
- Claude Code 有助于快速上手新框架,提高生产力。
- 专家程序员如果投入时间,可以体验到 Claude Code 的能力。
- 我们的专业没有实质性进步,仍然需要 AI 来处理本应抽象或自动化的样板工作。
- 依赖不可靠的随机代理来生成本应被完全确定性、正确程序抽象或自动化的样板代码是一种退化和浪费的软件开发方式。
- 虽然理论上可以设计不需要钉子或螺丝的家具,但实际上很难实现。
- 我们尝试过生产这样的系统,但结果往往是软件使简单的事情变得简单,困难的事情变得不可能。
- 没有企业经济激励去遵循减少样板和重复工作的方案,也没有 90 年代末期的自由开源软件精神。
- 日本传统建筑中存在不使用钉子或螺丝的构造系统。
- 铁在日本非常昂贵,因为他们只有低质量的铁矿石。
- 木工和框架工的技能要求和薪酬低于橱柜制造商,但世界需要更多的木工。
- 价值在于需求所在,或者市场对其的价值评估,而不仅仅是使用工具制作几乎任何东西的技能。
- AI 让我感到即将到来的厄运:将控制权交给一个可以为我们处理琐事的 AI 意味着我们将陷入一个不断重复的糟糕架构的循环。
- 3D 打印机可以每天输入新的架构和设计,创造出来,带来更多的灵活性而不是更少。
- 当人类在循环中时,一切都变得随机。
- 错误率和结果正确性更重要,这将焦点转移到测试用例、测量和结果上。
- 我们不通过随机过程生成代码。
- 即使是重复相同的工作,也存在不确定性和非确定性行为。
- 我们的日常行为中存在很大的不确定性和非确定性行为。
- 投掷飞镖是一个具有很大不确定性和非确定性行为的日常行为的例子。
Signal Secure Backups #
https://signal.org/blog/introducing-secure-backups/
Signal 推出了安全备份功能,允许用户在手机丢失或损坏时恢复消息历史。这是用户最常请求的功能之一,因为它涉及到家庭照片、重要文件等重要信息的保存。安全备份是可选的,并且是端到端加密的,用户可以选择不使用此功能。
安全备份允许用户每天以隐私保护的形式保存 Signal 对话的存档,并且可以选择免费备份文本消息和最近 45 天的媒体文件,或者支付每月 1.99 美元订阅费用备份超过 45 天的媒体历史和消息历史。Signal 作为一个非营利组织,需要通过这种方式来覆盖存储和传输大量数据的成本。
Signal 的安全备份技术基于零知识技术,备份存档存储时不会直接链接到特定的备份支付或 Signal 用户账户。核心是一个 64 字符的恢复密钥,这个密钥仅在用户设备上生成,不会与 Signal 服务器共享。如果用户丢失这个密钥,将永久失去对备份的访问权限,Signal 也无法帮助恢复。
用户可以在 Signal 设置菜单中选择启用安全备份。目前,只有运行最新测试版 Signal 的 Android 用户可以启用此功能,但很快将推广到所有平台。启用后,设备将每天自动创建一个新的安全备份存档,替换前一天的存档。用户可以解密备份存档以恢复消息数据库,但不包括一次性查看的消息和 24 小时内计划消失的消息。
Signal 计划未来提供更多安全备份选项,包括让用户选择保存备份存档的位置,以及在 Android、iOS 和桌面设备之间传输加密消息历史的功能。安全备份目前已在 Android 测试版中提供,iOS 和桌面支持的完整公开发布即将到来。即使用户没有激活此功能,聊天对象也可以选择备份对话,这些对话将继续受到保护。
HN 热度 513 points | 评论 266 comments | 作者:keyboardJones | 6 hours ago #
https://news.ycombinator.com/item?id=45170515
- Signal 新增功能允许在 Android、iOS 和桌面设备间转移加密消息历史。
- 用户期待已久,因为从 Android 换到 iOS 时会丢失所有使用 E2EE 的聊天应用消息历史。
- Telegram 因未加密而能正常工作,WhatsApp 迁移应用因 bug 失败,Signal 备份似乎不兼容不同操作系统。
- 用户询问是否可以通过新功能合并旧 iPhone 和新 Android 手机的 Signal 消息历史。
- Signal 开发者表示可以在新设备上恢复,旧设备数据仍然存在,可以重新注册旧设备回到原状态。
- 用户希望测试恢复功能,特别是不干扰主设备的情况下使用密钥在新设备上恢复。
- 用户询问备份功能是否允许在电脑上查看所有消息历史。
- 有用户提到 Signal 在 Android 上免费离线备份是可能的,但备份文件大且耗时。
- 现有的备份方式存在问题,如非增量备份、备份文件转移困难等。
- 有用户提到 SyncThing 从 Play Store 消失是因为 Google 开始拒绝其更新。
- 有用户认为 Google 的 APK 签名要求是一个混乱,但 Syncthing-Fork 可能不会受到太大影响。
- 有用户认为用户没有直接在手机上同步数据的方式并不是一个值得付费解决的真正问题。
Meta suppressed research on child safety, employees say #
https://www.washingtonpost.com/investigations/2025/09/08/meta-research-child-safety-virtual-reality
Meta 公司被指控压制了关于其虚拟现实平台上儿童安全问题的研究。四名现任和前任员工向国会透露,公司的律师干预了可能揭示虚拟现实风险的研究。这些员工描述了一个案例,一位德国西部的母亲告诉 Meta 的研究人员,她不允许儿子们与陌生人在社交媒体巨头的虚拟现实头盔上互动。
然而,她的十几岁的儿子插话称,他经常遇到陌生人,成年人曾多次向他不到 10 岁的弟弟提出性要求。读者的评论普遍批评 Meta 公司,认为其为了利润优先而压制与儿童安全相关的研究,表达了对 Meta 动机的不信任,并将其与其他公司进行比较。
HN 热度 455 points | 评论 293 comments | 作者:mdhb | 10 hours ago #
https://news.ycombinator.com/item?id=45167705
- 社交媒体是 21 世纪的烟草公司,明知有害却因利润继续运营。
- 反对 Meta 公司行为的人应删除其旗下应用账户,或至少尽量减少使用。
- 不要信任大公司,这是一条简单有效的生活准则。
- 在日常生活中,完全避免依赖大公司是不现实的,但可以保持警惕。
- 即使公司由人组成,也不要期待它们会有人类的同理心或道德行为。
- 人们在寻找支持自己信念的理由,但也许我们应该对这些公司有更高的标准。
- 一般性建议,不是严格的生活规则,应根据个人情况适当应用。
- 人们信任监管而不是生产者,但监管者本身也常常不值得信任。
- 由于公司不可信,许多行业现在受到高度监管。
- 为什么开发应用的人没有受到监管,尽管他们有能力窃取数据、金钱和声誉?
- 理发师需要注册和许可,但为什么构建应用的人不需要?
- 拥有的工具被设计为绕过用户权威,听从谷歌等公司的指令。
Immich – High performance self-hosted photo and video management #
https://github.com/immich-app/immich
immich-app 是一个高性能的自托管照片和视频管理解决方案。该项目目前处于非常活跃的开发阶段,可能会有 bug 和破坏性变更。不建议将应用程序作为存储照片和视频的唯一方式,建议始终遵循 3-2-1 备份计划来保护珍贵照片和视频。
immich-app 的主要文档,包括安装指南,可以在 https://immich.app/ 找到。该应用提供了移动和网页端的功能,包括上传和查看视频照片、自动备份、防止资产重复、选择性备份相册、下载照片视频到本地设备、多用户支持、相册和共享相册、支持 raw 格式、查看元数据(EXIF、地图)、通过元数据、对象、面部和 CLIP 搜索、后台备份、虚拟滚动、OAuth 支持、API 密钥、LivePhoto/MotionPhoto 备份和播放、支持 360 度图像显示、用户定义的存储结构、公共分享、存档和收藏、全球地图、合作伙伴分享、面部识别和聚类、记忆(x 年前)、离线支持、只读画廊、堆叠照片、标签和文件夹视图等。
immich-app 支持多种语言,包括加泰罗尼亚语、西班牙语、法语、意大利语、日语、韩语、德语、荷兰语、土耳其语、中文、乌克兰语、俄语、葡萄牙语(巴西)、瑞典语、阿拉伯语、越南语、泰语等。项目活动包括星标历史和贡献者信息。
HN 热度 405 points | 评论 138 comments | 作者:rzk | 15 hours ago #
https://news.ycombinator.com/item?id=45165684
- Immich 的软件供应链管理不佳,依赖更新频繁,用户希望有更成熟的依赖管理。
- Immich 等待 5 天后才会提出依赖更新的 PR,这是一个好的做法。
- 用户期待 Immich 有稳定的版本发布,并对备份问题表示担忧。
- 项目处于 beta 阶段,用户认为直到有正式版本发布之前,项目会持续混乱。
- 有用户认为项目永远不会稳定,而有用户认为项目正在稳步接近稳定发布的目标。
- 快速的依赖更新虽然让项目感觉不够“生产就绪”,但也显示了活跃的开发和错误修复。
- 用户倾向于等到项目被打包进 Debian/Ubuntu 后才使用,因为这表示依赖树已经稳定。
- 有用户认为提供 Docker Compose 文件是项目不成熟的标志。
- 项目正在积极开发中,负责任地保持依赖更新,这增加了用户的信心。
- 用户发现 Immich 在性能和同步方面有了很大改进,尤其是启用了 beta 时间线后。
- 用户希望搜索结果能按日期排序,而不是按相关性。
- 从 iCloud 导入的照片日期是上传日期,而不是照片创建或标记的拍摄日期。
- 用户反映在 Android 上使用新的 beta 时间线后,缩略图加载变慢。
- 用户认为 Immich 作为备份替代方案很好,但作为日常照片画廊应用还有待提高。
- 用户不知道 Immich 有 CLI 功能,希望能有文档指导。
- 用户在 Pi4 上运行 Immich,性能虽不是最好,但可以正常工作。
- 用户提到 immich-go 在迁移 Google Takeout 到 Immich 时非常有帮助。
- 用户希望 Immich 能通过 CLIP 进行搜索,并根据语义意义搜索内容。
Pico CSS – Minimal CSS Framework for Semantic HTML #
Pico CSS 是一个极简和轻量级的前端 CSS 框架,专注于语义化的 HTML 元素,使得每个元素默认响应式且优雅。它不需要额外的类或 JavaScript,仅通过纯 HTML 标记就能实现简洁的样式。Pico CSS 以其轻量级和语义化的特点,提供了一个清洁且轻量级的设计系统起点。
Pico CSS 以其“少即是多”的设计理念,直接对 HTML 标签进行样式设置,整体使用不到 10 个类。它还提供了一个无类的版本,适合那些喜欢纯粹 HTML 的用户。Pico CSS 无需额外的包管理器、外部文件或 JavaScript,通过纯 CSS 实现优雅的样式。
Pico CSS 支持响应式设计,能够根据屏幕宽度自动调整字体大小和间距,实现跨设备的一致性和优雅外观。此外,Pico CSS 提供了两种颜色方案:浅色和深色,并且能够自动适应用户的颜色偏好设置,无需 JavaScript。
Pico CSS 允许通过超过 130 个 CSS 变量进行定制,或者使用 SASS 进一步定制。用户可以选择 20 种手工制作的颜色主题,并与 30 多个模块化组件组合,以适应品牌的视觉风格。
在性能方面,Pico CSS 避免了过度的 CSS 特异性和文件加载,减少了内存使用,保持了 HTML 的简洁性。Pico CSS 的设计哲学是“少即是多”,强调简单和易于维护的设计基础。
Pico CSS 由 Lucas Larroche 设计和构建,并得到了贡献者的帮助。代码采用 MIT 许可,文档采用 CC BY-SA 4.0 许可。当前版本为 2.1.1。
HN 热度 362 points | 评论 105 comments | 作者:mpweiher | 1 day ago #
https://news.ycombinator.com/item?id=45161855
- Pico CSS 是一个极好的起点,易于定制和调整
- 有人提到 Neat,一个更小的 CSS 框架
- Pico CSS 受到 100 Rabbits 的启发
- Pico CSS 适合小型项目,特别是与 Hugo 这样的静态网站生成器结合使用
- Pico CSS 提供了 CSS 变量和颜色选项
- 有人希望能将 Pico CSS 集成到 Tailwind CSS 中
- 有人提到了 CSSBed 网站,可以预览不同的无类 CSS 主题
- 有人提到了 github-markdown-css,认为它是一个合理的 CSS 系统起点
- 有人提到了 CSS Zen Garden,一个展示不同 CSS 设计的网站
- Tufte CSS 看起来很优雅
- 有人提到了 dropin-minimal-css,包含许多不同的最小 CSS 框架
- Pico CSS 在移动设备上表现良好,是移动优先的
- 有人使用 Pico CSS 为自己的个人网站添加了暗色模式
- 有人建议使用 Server Side Includes 来避免使用 JavaScript
- 有人提到可以使用 HTML 的 embed 或 object 标签来插入 HTML,无需 JavaScript
- 有人批评了 div 标签的过度使用,认为它导致了语义的弱化
- 有人强调了学习语义 HTML 的重要性,以及公司对语义 HTML 的忽视
- 有人提到了 Tailwind CSS 与 Pico CSS 的比较,以及 Pico CSS 的更新和特性
- 有人对 Pico CSS 的新官网表示赞赏,并提到了 HTMX 和 HARC stack 的使用
Formatting code should be unnecessary #
https://maxleiter.com/blog/formatting
这篇文章讨论了编程中的代码格式化问题,特别是关于代码风格和 linter 工具的争议。文章提到,这些问题在 80 年代就已经得到了解决。作者的高中计算机科学老师 Mr. Paige 曾在 Ada 编译器项目中工作,他提到在 Ada 项目中,他们不存储文本源代码,而是使用一种名为 DIANA 的中间表示(IR)。DIANA 允许开发者根据自己的喜好进行漂亮的打印设置,因此空格与制表符之争变得无关紧要,因为它们不影响语义,而且系统上的编辑器允许直接修改程序树(即现代所谓的投影编辑)。
文章中提到,Rational R1000 工作站拥有许多前沿特性,如增量编译、语义分析、版本控制和一流的调试功能,这些都是内置的。R1000 与 Xerox Alto 类似,但使用的是 Ada 而不是 Smalltalk。R1000 在编写 ISS、F-22 等软件中被使用,并且促成了 UML 的诞生。
DIANA 是 Ada 的一个关键组件,它使得许多高级特性成为可能。R1000 不存储普通文本源代码,而是写入 DIANA。编译器和集成到机器中的 IDE 都理解 DIANA,因此可以按照你想要的方式查看源代码。使用 DIANA 和硬件加速,使得增量编译、轻松重构和快速集成成为可能,这对于使用 Ada 构建的大型系统至关重要。
作者认为,尽管我们今天不需要担心硬件加速编译,并且有更好的重构工具,但在代码格式化方面却有所退步。他并不是主张每个人都使用投影编辑和实时环境,但他认为我们肯定可以找到适合当今编程范式的东西。文章最后提供了一些进一步阅读的资料链接,并鼓励读者关注作者的 Twitter 或订阅 RSS 以获取未来的内容。
HN 热度 323 points | 评论 445 comments | 作者:MaxLeiter | 24 hours ago #
https://news.ycombinator.com/item?id=45163043
- 一些人认为过于关注 linter 设置是不必要的,应该自动运行 linter 并接受团队确定的格式。
- 有人认为源代码格式化程序和 lint 程序是不同的,前者重写代码以符合布局规则而不影响逻辑,后者用于识别潜在的实现错误。
- 一些现代工具同时包含 linting 和格式化功能,使得两者之间的界限变得模糊。
- 有人提到使用“检查”和“修复”这两个术语,因为越来越多的格式化工具开始包含修复功能。
- 有人认为格式化工具会添加 git 噪音并污染审计跟踪,有时甚至会引入错误。
- 有人反对格式化工具,认为它们重视一致性而牺牲了代码的可读性和可维护性。
- 有人强调代码格式的一致性可以减少因不同人更改格式而产生的无意义的 git 噪音。
- 有人建议在 CI 中强制执行格式化规则,以避免混乱和不必要的格式化更改。
- 有人认为在 CI 中不执行的规则就不算规则,他们更重视快速构建而非代码格式化。
- 有人指出,格式化工具破坏代码并不是所有语言生态中都存在的问题,主要是 C++ 和偶尔的 JS 问题。
How RSS beat Microsoft #
https://buttondown.com/blog/rss-vs-ice
RSS 在内容聚合战争中战胜了微软等大型科技公司支持的 ICE 标准。这个故事常被提及,但很少有人知道背后的原因。RSS 之所以胜出,是因为它更便宜、开放,并且易于博客作者使用 DIY 友好的 RSS feeds。ICE 虽然技术上更先进,但由于其复杂性、成本和封闭性,最终未能抵抗 RSS 的普及。
内容聚合战争的起源可以追溯到 1998 年,当时大型出版商开始关注内容聚合的商业潜力。他们希望通过简化网站重新包装和发布文章及电子商务目录的方式,来应对网站流量下降的问题。ICE 标准应运而生,旨在标准化一个网站上的数据如何自动发布到其他网站,从一开始就明确了其商业化目标。
与此同时,RSS 以一种更简单、开放的方式进入市场。它允许网站所有者使用 Netscape 的 XML 相关标签创建网站更新的 feed,并将其添加到 Netscape 的“频道”列表中。用户可以从列表中选择频道,将 widget 添加到他们的个性化 My Netscape Network 页面上,聚合他们最喜欢的博客和新闻网站。
ICE 和 RSS 在技术上有很多共同点,都使用 XML 作为共同语言,使用自描述标签区分内容元素,并允许订阅者随时“拉取”最新 feed。但在理念上,它们截然不同。ICE 由 Vignette 等公司创建,他们将技术发展交给了一个包括微软、Adobe、路透社等在内的联盟,而专注于商业发展。RSS 则相反,它的发展是由个人推动的,如 Dave Winer 在 Netscape 放弃开发后,自己编写了 RSS 的版本。
ICE 的要求过于复杂,其目标是自动化复杂的企业出版合作伙伴关系。它包含了目录定价和谈判、内容过期标签、版权执行功能以及将显示网站的视觉品牌应用于 feed 内容的能力。尽管这些功能可以被忽略,但这并没有使其 58,000 字的入门指南更易于理解。
相比之下,RSS 的设置和聚合器几乎任何人都可以操作。当 Winer 在 2002 年发布 RSS 2.0 版本时,一个 feed 只需包含三个元素:feed 标题、feed 描述和要分享项目的链接。RSS 的简单性使其迅速普及,甚至连《纽约时报》这样的大出版商也在 2002 年 11 月采用了 RSS。尽管 ICE 在 2004 年发布了 2.0 版本,但不到一年后,微软——ICE 的最大支持者——就有了一个专门的 RSS 博客,提出了 Internet Explorer 内置 RSS 功能的图标设计。这并非明确投降,但 ICE 和 RSS 理论上可以共存,就像 Betamax 可以允许其他公司制造和销售 Betamax 播放器一样。但他们没有这样做,所以他们输了。在这场战争中,小的胜利比大的胜利更重要。
HN 热度 251 points | 评论 148 comments | 作者:vidyesh | 12 hours ago #
https://news.ycombinator.com/item?id=45166750
- RSS 对消费者友好,但对发布者帮助不大
- 很多人使用 RSS 阅读器来管理订阅内容,比电子邮件更方便
- 浏览器取消原生 RSS 支持导致很多人转向其他平台
- 一些平台如 Reddit 仍然提供 RSS,但似乎并不重视
- RSS 无法放置广告,因此网站倾向于迫使用户访问网站本身
- RSS 中可以手动添加广告,但不能使用第三方广告网络
- 通过 RSS 无法像电子邮件那样追踪用户行为
- 可以通过 RSS 生成唯一链接进行追踪,但计算成本较高
- 如果 RSS 更受欢迎,可能会有更多追踪点击和广告浏览的方法出现
- RSS 是一个小众市场,因为大多数人不想自己管理订阅源
Keeping secrets out of logs (2024) #
https://allan.reyes.sh/posts/keeping-secrets-out-of-logs/
这篇文章讨论了如何防止敏感数据泄露到日志文件中。作者指出,没有单一的解决方案可以完全解决这个问题,而是需要采取多种措施,即所谓的“铅弹”策略。文章提出了 10 种方法,虽然不完美,但如果正确实施并结合多层防御,可以大大提高防止敏感数据泄露的机会。
文章首先介绍了日志中敏感数据泄露的问题,包括直接记录敏感数据、“厨房水槽”对象(包含或持有敏感数据的对象)、配置更改、嵌入式秘密、遥测和用户输入等六个常见原因。这些问题不仅令人烦恼,而且难以预防,因为它们可能以意想不到的方式出现在不同的地方。
接着,文章提出了一些解决方案,包括数据架构、数据转换、领域原语、编译时和运行时检查、一次性读取对象和污点检查等。作者强调,尽管这些方法并不完美,但通过综合运用这些策略,可以更有效地防止敏感数据泄露到日志中。
文章还讨论了日志格式化器、单元测试、敏感数据扫描器、采样和日志预处理器等工具和技术的使用,以及人员在防止敏感数据泄露中的作用。
最后,文章总结了策略,包括奠定基础、理解数据流、在关键点保护和应用多层防御、计划响应和恢复。作者希望通过这篇文章,读者能够对如何防止敏感数据泄露到日志中有一个更好的框架,并增加一些新的想法。
HN 热度 240 points | 评论 52 comments | 作者:xk3 | 1 day ago #
https://news.ycombinator.com/item?id=45160774
- 这是一个优秀的资源,无论是否同意作者的结论,它都是一个很好的问题列表,描述清晰,并附有技术解决方案。
- 通过在敏感字符串中插入特定的标记字符串(如可识别的前缀 + 随机生成的 UUID),可以在源头插入并在接收端移除,以防止敏感信息进入日志。
- 该方法可能比文章中提到的其他运行时技术更复杂且效果较差,不是自动单次使用,不是静态检查,容易出错,不能防止无意中泄露秘密。
- 该技术的一个原因是在保持字符串的保护的同时,尽可能使其看起来和感觉像底层内容,以便尽可能少地(和尽可能晚地)进行最后的解封操作。
- 当秘密可能出现在字符串的任何位置且无法控制输入时,需要将秘密传递给日志记录器以便可以进行脱敏处理。
- 可以通过在每个节点上运行 rsyslog,使用正则表达式匹配所有已知模式,并通过各种插件/附加组件将所有应用程序发送到本地 rsyslog 实例,然后加密 rsyslog 上游到集中式日志服务器。
- Java 中有 GuardedString 实现,但这不是标准 API 的一部分,看起来像是 Oracle Fusion 的框架 API,且不是开源的。
- GuardedString 不能直接记录,因为它不实现 toString()方法,需要通过 access()方法传递访问器实例来提取明文。
- 即使日志被完美地清理,它也可能包含许多你不想与对手分享的生产环境数据。
- 日志可能需要暴露给支持团队、值班团队、所有开发人员等,这些人比需要访问秘密的人多得多。
- 有来自对手的秘密和内部隔离的秘密,可能有数百人需要查看路由器的 syslog,但几乎没有人需要访问管理用户的登录凭据。
- 是的,但想想深度防御,你的团队成员可能会告诉竞争对手你的高峰使用时间,但他不应该能够告诉他们所有客户的密码。
- 个人信息识别(PII)与专有信息不同,客户的电子邮件?PII。遮蔽它。你的代码的堆栈跟踪?专有信息。员工可以看到它以进行故障排除。
Hacker News 精彩评论及翻译 #
NPM debug and chalk packages compromised #
https://news.ycombinator.com/item?id=45169794
Hi, yep I got pwned. Sorry everyone, very embarrassing.
More info:
Affected packages (at least the ones I know of):
-
debug@4.4.2 (appears to have been yanked as of 8 Sep 18:09 CEST)
It looks and feels a bit like a targeted attack.
Will try to keep this comment updated as long as I can before the edit expires.
Chalk has been published over. The others remain compromised (8 Sep 17:50 CEST).
NPM has yet to get back to me. My NPM account is entirely unreachable; forgot password system does not work. I have no recourse right now but to wait.
Email came from support at npmjs dot help.
Looked legitimate at first glance. Not making excuses, just had a long week and a panicky morning and was just trying to knock something off my list of to-dos. Made the mistake of clicking the link instead of going directly to the site like I normally would (since I was mobile).
Just NPM is affected. Updates to be posted to the /debug-js
link above.
Again, I’m so sorry.
junon
大家好,是的,我被黑了。对不起大家,非常尴尬。
更多信息:
受影响的软件包(至少是我所知道的):
-
debug@4.4.2 (已于 9月8日 18:09 CEST 被撤回)
这看起来感觉有点像一次有针对性的攻击。
我会在编辑过期前,尽力保持此评论的更新。
Chalk 已经重新发布了。其他包仍然被攻破(中欧夏令时间 9月8日 17:50)。
NPM 还没有回复我。我的 NPM 账户完全无法访问;忘记密码系统无法工作。我现在别无办法,只能等待。
邮件来自 support at npmjs dot help。
乍一看很正规。我不是在找借口,只是那一周过得很长,早上又很慌乱,只想快点完成待办事项中的一样。我犯了一个错误,像往常一样(因为当时我在用手机)没有直接访问网站,而是点击了链接。
只有 NPM 受到了影响。更新将发布到上面的 /debug-js
链接中。
再次向大家道歉。
The MacBook has a sensor that knows the exact angl… #
https://news.ycombinator.com/item?id=45161826
The lid angle sensor is also serialized to the motherboard: you cannot replace it, or the motherboard, without performing calibration, which can be performed by an apple authorized service provider, or alternatively, in Europe (and elsewhere where Apple offers parts for self-service repair), you can purchase the sensor from Apple, connect the machine to the internet after replacing it, to then perform the calibration, only if the sensor was purchased from Apple.
So the hardware is capable of performing the calibration, Apple just does not graciously grant you the right to install a recycled or third party sensor in your machine.
https://www.ifixit.com/Answers/View/759262/Torn+Lid+angle+sensor
Doohickey-d
屏盖角度传感器的序列号也与主板绑定在一起:如果不进行校准,你无法更换它或主板。此校准可以由苹果授权服务提供商进行,或者,在欧洲(以及苹果提供零部件用于自行维修的其他地区),你可以从苹果那里购买该传感器,但前提是该传感器是从苹果购买的,更换后需要将电脑连接到互联网才能完成校准。
所以,硬件本身是有能力进行校准的,苹果只是不愿意授予你在自己的电脑上安装翻新件或第三方传感器的权利。
What is the origin of the private network address … #
https://news.ycombinator.com/item?id=45157481
Daniel Karrenberg, co-author of RFC1918, said this 2017-10-06 on the NANOG mailing list:
On 05/10/2017 07:40, Jay R. Ashworth wrote:
Does anyone have a pointer to an authoritative source on why
10/8 172.16/12 and 192.168/16
were the ranges chosen to enshrine in the RFC? …
The RFC explains the reason why we chose three ranges from “Class A,B & C” respectively: CIDR had been specified but had not been widely implemented. There was a significant amount of equipment out there that still was “classful”.
As far as I recall the choice of the particular ranges were as follows:
10/8: the ARPANET had just been turned off. One of us suggested it and Jon considered this a good re-use of this “historical” address block. We also suspected that “net 10” might have been hard coded in some places, so re-using it for private address space rather than in inter-AS routing might have the slight advantage of keeping such silliness local.
172.16/12: the lowest unallocated /12 in class B space.
192.168/16: the lowest unallocated /16 in class C block 192/8.
In summary: IANA allocated this space just as it would have for any other purpose. As the IANA, Jon was very consistent unless there was a really good reason to be creative.
Daniel (co-author of RFC1918) https://web.archive.org/web/20190308152212/https://mailman.nanog.org/pipermail/nanog/2017-October/092636.html
isThereClarity
RFC1918的合著者Daniel Karrenberg于2017年10月6日在NANOG邮件列表上发表了以下言论:
在2017年10月5日07:40,Jay R. Ashworth写道:
有人能提供一个指向权威来源的链接,解释为什么RFC中选择了
10/8 172.16/12 和 192.168/16
这些地址段吗?……
RFC解释了我们分别从“A类、B类和C类”中各选择一个范围的原因:CIDR虽然已被定义,但尚未得到广泛实施。当时仍有大量设备是“有类”的。
据我回忆,具体范围的选择如下:
10/8:当时ARPANET刚刚关闭。我们中的一人提出了这个建议,Jon认为这是对这块“历史性”地址块的再利用。我们还怀疑“net 10”可能在某些地方被硬编码,因此将其用于私有地址空间,而不是在自治系统间路由,或许有一个小小的优势,就是将这种愚蠢的行为限制在本地。
172.16/12:B类地址空间中最低的未分配/12网段。
192.168/16:在C类地址块192/8中,最低的未分配/16网段。
总而言之:IANA分配这段地址空间的方式,与分配任何其他用途的空间时一样。作为IANA,Jon非常一以贯之,除非有充分的理由进行创新。
Daniel(RFC1918合著者)
NPM debug and chalk packages compromised #
https://news.ycombinator.com/item?id=45170133
One of the most insidious parts of this malware’s payload, which isn’t getting enough attention, is how it chooses the replacement wallet address. It doesn’t just pick one at random from its list.
It actually calculates the Levenshtein distance between the legitimate address and every address in its own list. It then selects the attacker’s address that is visually most similar to the original one.
This is a brilliant piece of social engineering baked right into the code. It’s designed to specifically defeat the common security habit of only checking the first and last few characters of an address before confirming a transaction.
We did a full deobfuscation of the payload and analyzed this specific function. Wrote up the details here for anyone interested: https://jdstaerk.substack.com/p/we-just-found-malicious-code-in-the
Stay safe!
DDerTyp
该恶意软件载荷最阴险、却未得到足够重视的部分之一,是它如何替换钱包地址。它并非只是从列表中随机选择一个。
实际上,它会计算合法地址与自身列表中每个地址之间的莱文斯坦距离(Levenshtein distance)。然后,它会选择在视觉上与原始地址最相似的攻击者地址。
这是一种内置于代码中的、极其巧妙的社交工程学攻击。其目的在于精准地攻破人们在确认交易前,仅检查地址开头和结尾几个字符这一常见的安全习惯。
我们对载荷进行了完整的反混淆(deobfuscation)并分析了这个特定函数。任何感兴趣的人都可以在这里阅读详细内容:https://jdstaerk.substack.com/p/we-just-found-malicious-code-in-the
祝各位安全!