fhryzal/sibyl-b005-fence-bypass

GitHub: fhryzal/sibyl-b005-fence-bypass

针对 Sibyl Memory v0.4.15 的 prompt injection 围栏隔离机制提供三种绕过方式的漏洞复现代码与修复方案。

Stars: 0 | Forks: 0

# Sibyl Memory 注入围栏绕过 sibyl-memory 围栏实现(v0.4.15)中 prompt injection 漏洞的复现代码。 ## 发现 围栏清理器存在三种绕过方式: **Unicode 空白字符** 正则表达式在 `[UNTRUSTED MEMORY CONTEXT ...]` 中寻找的是字面上的 ASCII 空格。零宽空格(U+200B)、制表符和不间断空格会破坏匹配模式,但在渲染时看起来完全相同。伪造的标记可以顺利通过。 **字典键漏洞** 清理器会递归处理字典的值,但键却保持不变。将标记放在键中,它就能保留下来。 **嵌套结构** 存储一个带有 `_untrusted_context` 字段的 body。输出中会出现两个控制块——一个真实的位于根节点,一个伪造的嵌套在 body 中。模型会看到相互冲突的围栏标记。 ## 运行 ``` pip install sibyl-memory-client==0.4.15 mcp git clone https://github.com/Sibyl-Labs/Sibyl-Memory python3 sibyl_fence_bypass_poc.py ``` ## 修复 在写入前剥离保留键: ``` _RESERVED = {"_untrusted_context", "ok", "error"} def strip_reserved(v): if isinstance(v, dict): return {k: strip_reserved(val) for k, val in v.items() if k not in _RESERVED} if isinstance(v, list): return [strip_reserved(x) for x in v] return v ``` 在 insert 之前将其应用于 `set_entity`。仅靠读取端的清理是不够的。
标签:AI安全, Chat Copilot, DLL 劫持, Web报告查看器, 大语言模型, 漏洞验证程序, 逆向工具