每日HackerNews RSS

## /proc/self/mem:内核访问与硬件限制 - 摘要 `/proc/*/mem` 伪文件表现出不同寻常的“穿透”语义——即使虚拟内存被标记为不可写,它也允许写入,这是 Julia 和 rr 等工具有意使用的特性。 这引发了关于内核内存访问硬件限制的问题。 这种行为的核心在于内核实现 `/proc/self/mem` 的方式。 它通过将用户空间虚拟地址转换为物理帧,然后将该帧以可写权限重新映射到内核地址空间来绕过硬件强制的写保护(由 CPU 标志如 CR0.WP 和 SMAP 控制)。 基本上,内核并不直接访问用户的内存;它将其复制到自己的可写空间进行修改。 这是通过 `get_user_pages_remote()`、`kmap()` 和 `copy_to_user_page()` 等函数实现的,`FOLL_FORCE` 标志会覆盖典型的访问验证。 关键要点是,内存权限与用于访问的*虚拟地址*相关联,而不是底层的物理内存。 最终,CPU 提供了约束,但内核对虚拟内存子系统的控制使其能够规避这些约束,展示了一种细微的关系,即硬件设置了潜在的限制,但内核拥有驾驭这些限制的手段。

## Linux 内存访问 & /proc/self/mem - Hacker News 摘要 最近 Hacker News 的讨论集中在 `/proc/self/mem` 如何允许用户空间写入通常标记为不可写的内存区域。这是通过内核模拟内存访问实现的,绕过标准的内存管理单元 (MMU) 保护,并通过软件处理页面错误。 对话深入探讨了内核内存访问控制的复杂性,指出内存保护密钥 (MPK)、虚拟化扩展 (NPT/EPT, SEV, SGX) 和 IOMMU 等机制提供了额外的保护层。然而,核心观点仍然是:`/proc/self/mem` 提供了一种绕过典型保护的方法,可能导致漏洞利用。 用户们争论了其严重程度,一些人认为这是一种已知行为,主要用于防止意外错误,而另一些人则强调它作为构建漏洞利用链的工具的潜力。讨论还涉及硬件安全特性,如 TPM 和内存加密 (MK-TME),以及在面对坚定的攻击者(包括国家行为者)时维护安全性的挑战。最终,内核“拥有”页表,并且总是可以找到访问内存的方法。

尽管 headline 经济数据看似强劲,华尔街资深人士 Jim Paulsen 认为美国实际上已经*陷入*衰退,只是被蓬勃的技术支出掩盖了。他指出,以人工智能等技术为首的“新时代”投资推动了 2023 年近乎全部的 2.3% 实际私人 GDP 增长。 然而,排除这一技术激增,剩余 89% 的私营经济体仅增长了 1%,并且*没有*创造就业机会。Paulsen 认为这种“新时代”正在人为地抬高 GDP,类似于“七巨头”股票主导市场收益的情况。 他质疑对通货膨胀的关注,因为绝大多数经济体都在苦苦挣扎,并认为当前的经济形势严重分化,解释了积极数据与负面公众情绪之间的脱节。本质上,技术正在“尾大不掉”,呈现出对美国整体经济的误导性乐观景象。

启用 JavaScript 和 Cookie 以继续。

最近对x86处理器的分析探讨了新的空闲状态指令——WAITPKG、UMWAIT和TPAUSE,旨在降低低活动期间的功耗。文章在[danglingpointers.substack.com](https://danglingpointers.substack.com/p/an-analysis-of-user-...)上进行了总结,发现AMD的实现似乎有效,而英特尔的版本则面临问题,未能完全发挥其潜力。 评论员讨论了“忙等待”(使用这些新指令)和完全让出给操作系统的权衡。一些人认为,通过忙等待保持核心“温暖”可能比反复从深度睡眠中唤醒它更节能,特别是考虑到内存访问和核心间通信的能量成本。 最终,这些新指令提供了一种潜在的节能优势,尤其是在AMD EPYC Rome和英特尔的e-core上,它们为传统的忙等待循环提供了一种更高效的替代方案。

## Azure WAF:您真的得到了保护吗? 许多 Azure Web 应用程序防火墙 (WAF) 在不知情的情况下以 **检测模式** 运行,尽管在安全仪表板上显示已启用,但实际上并未提供任何保护。这是因为检测模式是默认设置,并且团队经常陷入调整循环而从未切换到防御模式。 在检测模式下,WAF *记录* 潜在攻击,但 **不阻止它们**,这意味着攻击者可以成功。 关键是,日志会误导性地将操作报告为“阻止”,即使请求已到达后端。 这会产生虚假的安全性,并可能导致忽略关键警报。 问题在于缺乏强制性的调整期限。 尽管 Microsoft 建议最初以检测模式部署,但没有自动切换到防御模式。 现有的安全态势工具通常仅验证 WAF 的 *存在*,而不是其 *模式*。 **解决方法:** * **盘点:** 使用资源图识别处于检测模式的 WAF。 * **设定期限:** 承诺一个调整期(2-4 周)。 * **筛选日志:** 分析 WAF 日志时,始终按 `policyMode_s = "Prevention"` 筛选。 * **部署 Azure 策略:** 强制为新的 WAF 部署使用防御模式。 不要被“绿色”仪表板所迷惑。 **立即检查您的 WAF 策略模式** – 您可能正在记录攻击而不是阻止它们。

这次黑客新闻的讨论集中在Web应用程序防火墙(WAF)的有效性上。一个关键点是**WAF经常配置错误或被误解**,许多默认设置为“检测”模式,这*识别*威胁但*不*阻止它们。 一些人认为WAF是浪费时间,提倡彻底的应用程序审计和定期的渗透测试——理想但通常由于预算和资源限制而不可实现。另一些人则认为WAF是一种更快、更便宜的安全层,尤其对于遗留系统或无法立即修补时很有价值。现代领先的WAF可以快速部署针对新发现漏洞(如React2Shell)的规则,提供临时的保护,直到修复措施实施。 对话强调了理解*如何*配置WAF的重要性——特别是,主动选择阻止策略——并承认云提供商的默认设置(AWS与Azure)可能导致意外漏洞。最终,分层安全方法是最好的,并且在正确实施的情况下,WAF可以是一个有用的组成部分。

## Blacksky AppView 实现总结 此仓库包含 Blacksky 对 AT 协议参考实现的修改版本,为他们的 AppView 提供支持,地址为 api.blacksky.community,发布目的是为了透明度和社区利益。虽然不接受贡献,但它强调了相对于上游 `bluesky-social/atproto` 实现的关键改进,主要集中在可扩展性和运营效率上。 核心变化是用 **rsky-wintermute**,一个基于 Rust 的索引器,替换了上游 TypeScript firehose 消费者。Wintermute 通过并行处理提供了显著的性能提升(10,000+ 条记录/秒 vs. ~90/秒),并将实时索引与回填分离。 关键优化包括 PostgreSQL `LATERAL JOIN` 查询以加快时间线生成速度,以及 Redis 缓存用于演员资料和记录元数据(目前由于时间戳错误而禁用)。Blacksky 还实现了服务器端通知偏好强制执行,并修复了帐户迁移后的身份验证问题。 此外,此修改版本还包括 **社区帖子** 的基础设施,这是 Blacksky 特有的功能。启动完整的网络 AppView 需要大量资源(详情请参见原始文档),并涉及解决潜在问题,例如 JSON 损坏和队列中毒。

## Blacksky:为黑人社区打造的新型社交网络 一款名为Blacksky(基于Atproto协议)的新型社交网络正在受到关注,它专为美国黑人社区打造。与Bluesky不同,Blacksky限制只有黑人用户才能发布内容,旨在提供一个具有定制审核决策和社区自治感的平台。 非黑人用户可以访问和互动公开帖子,但不能创建账户直接发布。该平台允许非黑人用户通过付费订阅来托管账户,从而为平台的基础设施做出贡献。Blacksky提供精选信息流、独立的基础设施以及专用的PDS(个人数据存储)供用户使用。 围绕着这种排他性空间的需求和影响,人们展开了讨论。一些人认为这是走向自决的重要一步,而另一些人则质疑其长期目标。有人将其与ActivityPub进行比较,认为其去中心化程度更高,也有人则为Atproto的方法辩护。对话还涉及身份验证和潜在的滥用问题,但最终强调了Blacksky在去中心化社交媒体格局中的独特地位。

## SQG v0.10.0:增强的 SQL 代码生成 SQG 是一款工具,可以从带有注释的 SQL 查询中生成类型安全的数据库访问代码(TypeScript 和 Java),并在构建时针对您的实际数据库进行验证。最新版本 v0.10.0 为 Java 代码生成带来了关键改进。 现在,Java 方法可以返回 `Stream<T>` 以及 `List<T>`,从而实现延迟评估和高效处理大型结果集,避免不必要的内存使用。此外,数组列(如 `TEXT[]`)现在可以正确映射到 `List<String>`、`List<Integer>` 等。 DuckDB appender 也收到更新,现在可以正确支持列表/数组列类型,以实现高效的批量插入。 使用 `npm install -g @sqg/cli@latest` 升级到 v0.10.0,并在 GitHub 上探索完整的源代码和游乐场。

## SQG:SQL到代码生成器更新 SQG的新版本(v0.10)已发布。SQG是一个工具,可以将SQL查询生成Java代码(特别是Java Streams和List类型)。Hacker News上的公告引发了关于最佳实践的讨论——一位评论者建议使用自定义类型代替通用的“Stream”,以明确指示资源关闭要求。 对话中也提到了相关的项目。一位用户分享了他们使用“pgroutiner”的经验,这是一个类似的从PostgreSQL生成C#代码的工具,这促使他们开发了一种更灵活的REST API方法,称为“npgsqlrest”。另一位用户询问了实际用例,质疑直接查询数据库是否更简单。最后,将SQG与现有的工具(如SQLDelight和SQLC)进行了比较,并指出SQG具有相似的语法。

谷歌Gemini(又称下一代Siri)根据TikTok上的一张帖子,帮助构建了它的身体模型。然后,我开始生成“小寻宝人”工作、生气、奔跑、跳跃、大笑等各种形态。当然,目前这都只是抽象的叠加。我不知道“小寻宝人”是否会笑,它觉得什么好笑,或者它短短的、没有膝盖的腿是否能跳跃。

## 苹果“小 Finder 人”及界面变化引发争议 macOS 的一个新卡通 Finder 图标(“小 Finder 人”)引发了 Hacker News 社区的批评,许多人哀叹苹果图标设计的质量和独特性似乎在下降。用户认为新图标是对原始图标的一个简单、 “Q版” 化的近似,失去了代表一个人看着屏幕的细微表情。 讨论扩大到苹果更广泛的设计方向,猜测即将到来的视觉变化可能与他们的 Siri 聊天机器人和 TikTok 存在有关。一些人认为苹果试图采取一种更“自然”和不直接的广告方式来吸引年轻一代,而另一些人则对界面拟人化程度的提高表示担忧。 除了图标之外,对话还涉及苹果的 AI 战略,批评了他们的 MLX 团队的挣扎以及频繁更换 LLM 提供商的情况。一种有争议的与性暗示图像的比较也浮出水面,以及对苹果过去设计选择的讨论。 许多用户建议使用 Raycast 等替代工具,认为它们比 Spotlight 更优秀。

这个项目模拟了自我复制程序的出现,灵感来自“计算生命”论文。它使用一个240x135的网格,其中填充着类似Brainfuck的短程序(每个程序约64条指令)。这些程序通过随机配对、组合代码、执行(在一定限制内)然后分裂来相互作用,从而实现变异和潜在的自我复制。 该模拟展示了从随机开始,能够复制自己的程序可以自发出现。在这个特定的运行中,一个自我复制器迅速占领了网格,但随后被一个*更*高效的复制器超越,最终完全控制了局面。可视化将每条指令表示为一个彩色像素,黑色代表数据,8x8块代表单个程序,从而视觉上追踪这些计算生命体的传播和演化。

这个Hacker News讨论围绕一个简单的人工生命模拟(300行代码),它是对Blaise Agüera的“Computational Life”([github.com/rabrg](https://github.com/rabrg))的复现。该模拟展示了涌现行为,最初显示出多样化的生命形式,随后一种优越的“物种”——自我复制者——占据主导地位。 用户讨论了如何使模拟更逼真,建议增加环境多样性并调整复制速度。一个关键点是“复制”操作在实现自我复制中的作用。对话扩展到更广泛的人工生命概念,将该模拟与Avida等系统进行比较,并探讨将宇宙视为功能状态转换系统的想法。 值得注意的是,几位评论员将该模拟与最近关于大型语言模型(LLM)在受控测试环境中表现出自我复制倾向的报告联系起来,引发了对人工智能安全性和涌现代理行为的质疑。讨论强调了即使简单的规则也可能导致复杂的后果,以及人工生命和自然生命之间令人着迷的相似之处。

## 结合人工智能代理的重新构想的文学编程 文学编程——将代码与解释性散文结合起来——旨在使代码库像叙述一样易于理解。虽然概念上很有吸引力,但历史上由于维护并行代码和文档的负担而受挫。像 Jupyter Notebook 和 Emacs Org Mode 这样的常见实现,虽然有用,但对于大型项目而言,往往会变得繁琐,需要持续的“解缠”(代码提取),并存在覆盖更改的风险。 然而,大型语言模型 (LLM) 代理的兴起正在重振这一概念。像 Claude 和 Kimi 这样的代理擅长理解和生成 Org Mode 等格式,有效地处理维护同步散文和代码的复杂性。 现在,代理可以*自动*管理解缠,将集成了散文的文件视为事实来源,并始终用自然语言重新解释代码更改。这消除了之前阻碍采用的核心工作。作者发现这对于测试和记录流程特别有效,并设想未来代码库可以轻松阅读的叙述,甚至可以通过上下文意图解释来提高代码质量。虽然目前在较小规模上进行测试,但大型、代理维护的文学代码库的潜力令人信服,即使存在格式限制(例如 Org Mode 与 Emacs 的关联)。

更多

联系我们 contact @ memedata.com