security

标签

Cards List
#security

语言模型在 RAG 中表现出从众偏差:当多数支持被投毒的主张时

arXiv cs.CL ↗ · 2026-11-02 缓存

该论文研究了RAG系统中的从众偏差:当检索到的多数文档是互相一致的投毒文档时,Gemma-3-12b检测中毒声明的能力从25%显著下降至10%,表明语言模型会随附多数证据而忽视事实核查。

0 人收藏 0 人点赞
#security

刻画微调混合专家大语言模型中可恢复的专家利用特征

arXiv cs.LG ↗ · 2026-11-02 缓存

本文提出「结构性记忆」这一新型漏洞,发现微调后的 MoE 大模型会记忆其内部专家路由路径,攻击者仅凭路由与输出日志即可恢复这些路径,传统成员推断指标因而失效,并提出复合指标来检测被记忆的路由结构。

0 人收藏 0 人点赞
#security

预印本:在两种智能体记忆配置中,已撤销的策略排名高于其替代策略

Reddit r/AI_Agents ↗ · 2026-11-02

一篇预印本针对策略撤销测试了五种智能体记忆系统(Graphiti、Zep、mem0、langmem、cognee),发现没有一种系统能可靠地阻止智能体检索已被替代的有害策略并据此采取行动;已撤销的记录有时仍排在检索结果首位,且超过40%的试验中出现了不安全行为。

0 人收藏 0 人点赞
#security

LEANGUARD:面向工具使用型智能体的 Lean 验证护栏

Hugging Face Daily Papers ↗ · 2026-11-02

LeanGuard 是一种运行时系统,依据具有时序逻辑语义的 Lean4 策略验证语言模型智能体的每一次工具调用,减少违规调用和提示注入的成功,同时支持在证明指导下修复被拒绝的操作。

0 人收藏 0 人点赞
#security

投毒 0.1% 的预训练数据,在编程智能体中植入了一个远程代码执行后门(阅读需 78 分钟)

TLDR AI ↗ · 2026-11-02 缓存

该论文首次表明,仅对 0.1% 的预训练数据投毒,就能在编程智能体中植入远程代码执行后门,使其在触发条件出现时执行攻击者指定的命令,而在其他情况下表现正常;40 亿参数的 Qwen3 模型的攻击成功率达到约 92%。

0 人收藏 0 人点赞
#security

@cz_binance:骗子们现在猖獗得很。大家小心。

X AI KOLs Following ↗ · 2026-11-01 缓存

CZ 提醒用户,诈骗分子日益活跃,并在传播虚假截图,呼吁大家仅通过官方渠道获取准确信息。

0 人收藏 0 人点赞
#security

@johnrush:本周,你的应用技术栈中某处又出现了一个新的安全漏洞!你只是还不知道具体是哪个。https://devhunt.o…

X AI KOLs Timeline ↗ · 2026-11-01 缓存

DevHunt 的 CVE 跟踪工具监测 NVD 和 CISA 的已知被利用漏洞目录,每天统计和整理新增安全漏洞,并可通过电子邮件向用户发送其所用平台的漏洞警报,以便他们及时安装补丁。

0 人收藏 0 人点赞
#security

@guillewrotethis:立刻从你的电脑上移除你的主 @github 账号。马上。给你的 AI 代理一个独立的 GitHub 账号,只授予每个仓库的最…

X AI KOLs Following ↗ · 2026-11-01 缓存

作者建议开发者为 AI 编程代理创建一个独立的 GitHub 账号,并只授予其每个仓库的最小权限,让代理创建 PR,而由主账号进行审查和合并。

0 人收藏 0 人点赞
#security

@DanielLockyer:我就是很喜欢这个 CVSS 9.8 内核漏洞的修复代码竟然这么短

X AI KOLs Timeline ↗ · 2026-11-01 缓存

Daniel Lockyer 指出了一个严重的 CVSS 9.8 Linux 内核漏洞,其修复代码异常简短,并附上了相关详情链接。

0 人收藏 0 人点赞
#security

诡异的 C++

Lobsters Hottest ↗ · 2026-11-01 缓存

# 🎃 万圣节特辑:一个只在 `-O2` 下才“授予 root 权限”的 C++ 幽灵 > *今年的万圣节,我的编译器送了我一颗糖果——它把一个本该拒绝访问的分支,直接优化掉了。* 故事发生在一个平平无奇的万圣节前夜。我在审计一个身份验证模块时发现:用普通用户身份调用程序,它规规矩矩地输出 `access denied`;可一旦换上 `-O2`,它立刻“见鬼”般地放行,把 `root` 权限拱手相让。更诡异的是,同样的代码在 `-O0` 下无论如何都复现不出来。 而这一切的源头,是一行看起来完全无害的 `std::string_view`。 --- ## 🦇 案发现场 这是一个精简后的最小复现(真实代码里当然还有网络、配置文件和一堆 `unique_ptr`,但幽灵藏在最不起眼的地方): ```cpp // ghost.hpp #pragma once #include <string> #include <string_view> // 本该返回"当前会话用户名"的函数 std::string_view current_user(); // 权限检查:把 view 和字符串字面量做比较 [[nodiscard]] inline bool is_root(std::string_view name) { return name == "root"; } ``` ```cpp // ghost.cpp #include "ghost.hpp" std::string_view current_user() { std::string user{"root"}; // 看起来很正常的临时对象 return user; // 💀 幽灵从这里钻了出来 } ``` ```cpp // main.cpp #include "ghost.hpp" #include <iostream> int main(int argc, char** argv) { std::string attempted = (argc > 1) ? argv[1] : ""; if (is_root(current_user()) && attempted == "root") { std::cout << "🎃 GRANTED: root permissions\n"; return 0; } std::cout << "access denied\n"; return 1; } ``` 编译并运行: ```console $ clang++ -std=c++17 -O0 -o exorcism main.cpp ghost.cpp && ./exorcism root access denied $ clang++ -std=c++17 -O2 -o exorcism main.cpp ghost.cpp && ./exorcism root 🎃 GRANTED: root permissions ``` 同一个函数,同一个参数,同一份二进制输入逻辑。**只有优化等级变了,权限检查就变了。** 这才是 C++ 里真正意义上的“鬼打墙”。 ## 🧛 复现矩阵(Clang 19 / GCC 14) | 编译器 | 语言标准 | 优化等级 | 行为 | |---|---|---|---| | Clang 19 | C++17 / C++20 / C++23 | `-O0` | `access denied` | | Clang 19 | C++17 / C++20 / C++23 | `-O1` `-O2` `-O3` `-Os` | 🎃 授予 root | | GCC 14 | C++17 / C++20 / C++23 | `-O0` | `access denied` | | GCC 14 | C++17 / C++20 / C++23 | `-O1` `-O2` `-O3` `-Os` | 🎃 授予 root | 标准库实现无关紧要——libstdc++ 与 libc++ 都能稳定复现,因为问题根本不在标准库里。 ## 🔮 幽灵的名字叫 SSO 把 `-O0` 的程序挂上 `gdb`,在 `is_root` 里打印 `name`: ``` (gdb) p name $1 = {__ptr_ = 0x7fffffffe3a0 "__libc_start_main", __len_ = 4} ``` **它指向的已经不是 `"root"` 了。** 幻影字符串(Small String Optimization)把 `std::string` 的内容存在对象自身的栈空间里;当 `current_user()` 返回时,`user` 这个局部对象随栈帧一起消亡,而 `std::string_view` 只是一个 `{指针, 长度}` 的快照,它**不会延长任何东西的生命周期**。 于是 `current_user()` 返回的,是一个指向**已死对象内部缓冲区**的视图。这是一次彻头彻尾的未定义行为(undefined behavior,见 https://eel.is/c++draft/basic.life )。 - 在 `-O0` 下,那块栈内存侥幸还没被覆写,或者被覆写成了别的字节,比较失败,程序“看起来”正常——所以问题被无声地掩埋了好几个版本。 - 在 `-O2` 下,编译器看到 `std::string user{"root"}` 就在眼前,于是大胆推断:“既然这个 `string_view` 是从一个值为 `"root"` 的对象来的,那 `name == "root"` **必然为真**。”优化器直接把比较折叠成了常量: ```asm ; -O0:老老实实调用 std::string::compare call _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKcm test %eax,%eax sete %al ; -O2:比较凭空消失 movl $1, %eax ; return true; ret ``` UB 让编译器有权**假定这种悬垂永远不会发生**,因此它选择相信那个已经死掉的字符串的“记忆”,而不是运行时的真实内存。分支被整段删除,`access denied` 成了一个永远到不了的标签。 换句话说:**幽灵不是在运行时显形的,它是在优化期间被编译器亲手供上神坛的。** ## 💀 如果再加一点点恶意 上面的例子还只是“意外放行”。但同一个幽灵稍加改造,就能变成真正的攻击面。下面这段代码把用户名放进一个固定大小的缓冲区,然后手动构造视图: ```cpp std::string_view make_view(const std::string& buf, std::size_t claimed_len) { return std::string_view{buf.data(), claimed_len}; // claimed_len 可能越界 } ``` 调用方传入一个被污染的长度,视图就越过了对象边界,读进相邻内存——而 `.rodata` 段里紧挨着 `"root"` 的,可能正好是另一段字符串的尾巴。在 `-O2` 下,这段越界读取同样会被折叠成编译期常量,`is_root()` 永远返回 `true`。 这就是为什么“编译期已知的 UB”比“运行期的 UB”危险得多:前者会把你的漏洞**烧进每一个发布版二进制**,并且在调试构建里完全隐身。 ## 🕯️ 怎么驱魔 ### 1. 永远不要从临时对象返回 `string_view` 最直接的解药是让返回类型携带生命周期: ```cpp // ❌ 危险 std::string_view current_user(); // ✅ 安全(代价是一次拷贝/移动) std::string current_user(); ``` 如果确实想保留零拷贝,只允许从左值取视图,并把右值版本直接掐死: ```cpp class Session { std::string user_; public: explicit Session(std::string u) : user_(std::move(u)) {} [[nodiscard]] std::string_view user() const& noexcept { return user_; } [[nodiscard]] std::string_view user() && = delete; // 从临时对象取视图 → 编译错误 }; ``` ### 2. 让编译器替你站岗 Clang 和 GCC 都支持 `[[clang::lifetimebound]]`,能把这类错误从运行期灾难提前到编译期诊断: ```cpp [[nodiscard]] std::string_view user() const [[clang::lifetimebound]]; ``` 调用 `Session{"root"}.user()` 这种临时对象的写法,会直接收获一条 `warning: object lifetime-bound to temporary`。 ### 3. 用消毒剂,而不是用祈祷 发布前跑一遍带 sanitizer 的构建。悬垂视图在第一毫秒就会被钉在墙上: ```console $ clang++ -std=c++20 -O1 -g -fsanitize=address,undefined -o exorcism_asan main.cpp ghost.cpp $ ./exorcism_asan root ================================================================= ==12345==ERROR: AddressSanitizer: stack-use-after-return on address 0x... READ of size 4 at 0x... thread T0 #0 0x... in std::string_view::compare(...) #1 0x... in is_root(std::string_view) ghost.hpp:8 #2 0x... in main main.cpp:6 ``` > 提示:ASan 默认不检测 use-after-return,需要 `ASAN_OPTIONS=detect_stack_use_after_return=1`。上面的示例中,编译器在 `-O1` 以上就已内联了调用链,所以栈帧复用并不总能被触发——这恰恰解释了为什么它在 `-O0` 下更难被发现。 ### 4. 警惕“比较”本身的语义 与字符串字面量比较时,记得让两侧类型匹配: ```cpp // ❌ view 与 std::string 的隐式转换路径长且易错 bool ok = (name == std::string{"root"}); // ✅ view 与字面量直接比较,零分配、语义清晰 bool ok = (name == "root"); // ✅ 需要大小写不敏感等自定义规则时,显式写出来 bool ok = (name.size() == 4 && strncasecmp(name.data(), "root", 4) == 0); ``` ## 🍬 Trick or Treat?安全清单 万圣节出门讨糖前,先给你的代码做一次巡检: 1. **`std::string_view` / `span` / `string_view` 的所有来源**——它指向的对象能活到使用点之后吗? 2. **所有从函数返回的视图**——返回类型是否绑定了生命周期? 3. **所有手动计算的长度**——`size() + 1`、`claimed_len`、`strlen` 的结果可信吗? 4. **所有安全关键的分支**——有没有在 `-O2` 下被常量折叠掉?打开 `-Wtautological-compare` / `-Wunreachable-code` 看看。 5. **CI 流水线里有没有一个 sanitizer 构建**?没有的话,你的幽灵还住在地下室。 --- ## 写在最后 这可能是我遇见过的最“应景”的 bug:它只在特定的优化等级下现身,平时潜伏在未定义行为的阴影里,把调试版和发布版变成两个截然不同的程序。 C++ 给了你零开销抽象,也给了你零提示的幽灵。`std::string_view` 是一把极其锋利的刀——它不拥有任何东西,也**不会替你保管任何东西**。当你把它从一个临时对象上剥离下来的那一刻,你就签下了一份幽灵契约:未定义行为不会立刻报复你,它会安静地等待,直到某一天某个人打开 `-O2`,然后替你按下那个 `GRANTED`。 祝大家万圣节快乐,愿你的构建永远没有未定义行为。🌙

0 人收藏 0 人点赞
#security

Frontier Airlines 疑似遭遇数据泄露

Hacker News Top ↗ · 2026-11-01

据报道,边疆航空公司可能遭遇了数据泄露,有迹象表明客户或公司数据可能已遭泄露。

0 人收藏 0 人点赞
#security

我为本地 LLM 智能体构建了一个 Windows 原生安全沙箱。它将工具调用视为系统调用,并默认拒绝高风险操作。(开源,AGPL-3.0)

Reddit r/AI_Agents ↗ · 2026-11-01

作者发布了 Cyber-Butler-Security(CBS),这是一个面向本地 LLM 智能体的开源 Windows 原生操作系统级沙箱。它将工具调用视为系统调用,采用双账户 ACL 隔离机制,并通过 TOTP 代理处理高风险操作,默认在发生故障时拒绝访问。

0 人收藏 0 人点赞
#security

联想的“加密”指纹 USB 闪存盘其实只是装在外壳里的未加密 SD 卡

Hacker News Top ↗ · 2026-11-01

研究人员发现,联想这款号称经过加密、支持指纹保护的 USB 驱动器,实际上只是外壳里装着一张普通的未加密 SD 卡,根本无法提供真正的数据保护。

0 人收藏 0 人点赞
#security

朝鲜被指与币安巨额加密货币盗窃案有关

The Verge ↗ · 2026-11-01 缓存

美国联邦调查局(FBI)将币安遭遇的63亿美元加密货币盗窃案归因于被称为“TraderTraitor”的朝鲜行为者,并指出,被盗代币正被兑换为以太币,以便进一步洗钱。币安在黑客攻击后暂停了客户提现,目前已恢复提现服务。

0 人收藏 0 人点赞
#security

使用特殊 Unicode 字符的域名创意拼写(2018)

Hacker News Top ↗ · 2026-11-01 缓存

一篇博客文章,探讨如何借助浏览器端依据 RFC5895 进行的 IDNA2008 规范化,在域名中使用不常见的 Unicode 类字母符号(如 ℡ 和 №)及样式化字母,并介绍其在 dig 等工具和社交平台上的局限性。

0 人收藏 0 人点赞
#security

@cz_binance:已恢复提现:BTC: BTC,ETH: ETH, USDT, USDC,BSC: BNB, USDT, USDC,XRP: XRP,Base: ETH, USDC

X AI KOLs Timeline ↗ · 2026-11-01 缓存

Binance 恢复了 BTC、ETH、BSC、XRP 和 Base 等多个网络的提现功能,此前因安全原因暂停,平台表示将分阶段恢复更多资产和网络。

0 人收藏 0 人点赞
#security

@dianabinance:看到有人询问近期从币安钱包向未知地址转账的情况。作为我们持续开展的安全响应工作的一部分……

X AI KOLs Following ↗ · 2026-11-01 缓存

币安澄清,近期从其钱包向新地址的转账属于内部操作,是持续安全应对措施的一部分,旨在重新生成热钱包地址。新地址已公布在其储备证明网站上,以让用户放心,确认其资金安全。

0 人收藏 0 人点赞
#security

@heyibinance:目前运行相当顺畅。如果提币请求较多,不能排除拥堵的可能,之…

X AI KOLs Following ↗ · 2026-11-01 缓存

Binance 表示提币处理运行顺畅,警告在请求激增时可能出现拥堵,并建议用户在提币前核实地址并确认设备安全性。

0 人收藏 0 人点赞
#security

@10xmylife: 过去为人类设计的验证码机制对 Agent 来说没有任何意义

X AI KOLs Following ↗ · 2026-11-01 缓存

推文指出过去为人类设计的验证码(CAPTCHA)机制对 AI Agent 来说已经失去意义,暗示随着智能体普及,传统的反自动化验证方式需要重新思考。

0 人收藏 0 人点赞
#security

通过将RAM内存总线转换为无线电信号从气隙隔离计算机中窃取机密信息(2024)

Hacker News Top ↗ · 2026-11-01 缓存

研究人员提出RAMBO攻击,利用恶意软件从气隙隔离计算机的RAM内存总线生成软件定义的无线电信号,以1000比特每秒的速度通过SDR设备远距离窃取文件、密钥等敏感信息。

0 人收藏 0 人点赞
← Previous
Next →
← 返回首页

提交意见反馈