HackerTube ?

28c3: The Science of Insecurity

字幕解读

Meredith Patterson 将漏洞视作输入协议和消息格式的结构性问题:过于复杂、难以判定的输入语言会让不同实现产生分歧,并在解析与处理交织时暴露可编程的“怪异机器”。她用计算理论与 Chomsky 语言层级解释风险,建议把输入视为形式语言、从语法生成识别器,在处理前完整验证,并尽量限制协议的计算能力,确保通信双方对消息解释一致。

自动字幕 · 引文按字幕原文展示,可点时间戳回看片段。

内容要点

  • 许多漏洞来自协议与消息格式要求实现解决不可判定或无法可靠完成的识别问题。
  • 输入识别应与业务处理分离;先确认完整输入属于定义明确的语言,再把解析树交给内部逻辑。
  • 协议应采用尽可能简单的输入语言,并让所有端点对消息含义保持计算等价;宽松接受和歧义会带来安全风险。
视频章节 6
  1. 把安全问题作为可预测的系统性问题
  2. 漏洞与输入格式设计
  3. 可信计算与输入识别
  4. 停机问题和不可判定性
  5. Chomsky 语言层级
  6. 跨系统解析一致性与协议设计
具体观点与证据 4

输入识别必须先完整完成,再交给业务处理,避免半验证状态成为攻击者可编程的机器。

主张针对输入边界,不要求CPU或应用整体失去通用计算能力。

if you haven't recognized it don't goddamn process it
探索此观点 →

通信双方必须对同一消息作一致解释,否则攻击者可利用解析差异。

视频用证书实现差异与IDS规避说明,不表示仅有语法一致便保证全部安全。

parse those messages in exactly the same way
探索此观点 →

输入处理的计算能力应视为一种权限,设计协议时尽量限制它。

讲者建议规则或确定性上下文无关语言,并承认运行时间仍有独立问题。

treat input handling computational power as privilege and reduce that privilege
探索此观点 →

把验证散落在处理逻辑中使输入语言隐含化,难以系统测试或调试。

建议从明确定义的语法生成识别器,再操作解析树。

you cannot efficiently and effectively test or debug when you're when you're intermingling
探索此观点 →
补充字幕原文 2

讲者将大量漏洞归因于协议和消息格式设计造成的输入处理困难。

the vast majority of vulnerabilities come from protocol and message format designs

接受输入前应以明确的语言定义和对应识别器做完整验证。

be definite about what you accept treat inputs as a language
解读边界

这是 Meredith Patterson 从语言理论出发提出的安全设计主张,部分建议(如避免图灵完备输入协议)具有鲜明立场;协议性能与复杂度取舍在问答中仍有争议。字幕包含较多 ASR 错词和专名错误。

相关视频与证据 3

能力与安全边界意外的通用计算能力也可能成为攻击面

PowerPoint展示原本用于展示的动画构造可以模拟任意转移函数;安全演讲则把输入处理的计算能力视为应受限的权限,解释为什么通信边界不应无意引入过强的执行能力。

关联视频

On The Turing Completeness of PowerPoint (SIGBOVIK) ↗

改变穿孔卡片位置可改变转移函数,从而模拟其他图灵机。

essentially imitate any transition function of any other touring machine
▶ 4:07–4:17 · 观看片段
当前视频

28c3: The Science of Insecurity

输入处理的计算能力应视为一种权限,设计协议时尽量限制它。

treat input handling computational power as privilege and reduce that privilege

适用边界 前者是主动构造的演示,不是漏洞证据;后者限制的是协议边界而非反对所有通用计算。

跨领域边界问题不可信输入进入处理路径前,边界应在哪里

提示注入演示外部内容被误当成新指令;LangSec则展示在完整识别输入前交错执行处理逻辑,会产生攻击者可利用的状态转换。两者可作为输入边界设计的对照,不能据此推出相同攻击机制或相同修复办法。

关联视频

[1hr Talk] Intro to Large Language Models ↗

提示注入会把检索来的外部内容伪装成新指令,能力扩展也带来新攻击面。

prompt injection is about hijacking the large language model giving it what looks like new instructions
▶ 52:11–52:21 · 观看片段
当前视频

28c3: The Science of Insecurity

输入识别必须先完整完成,再交给业务处理,避免半验证状态成为攻击者可编程的机器。

if you haven't recognized it don't goddamn process it

适用边界 自然语言提示注入不能简单用形式语法解析彻底解决;两者共享边界原则,攻击机制并不等价。

故障模型的对照遇到无效输入,应当纠正还是拒绝?

信道纠错把接近合法码字的受扰数据解码为合法邻居;协议安全要求完整识别输入后再交给处理逻辑。两端都界定了合法消息,决定如何处理偏离时,需要先问面对的是随机误码还是主动构造的输入。

关联视频

But what are Hamming codes? The origin of error correction ↗

纠错编码只将部分消息当作合法码字,接收方从受扰消息寻找最近的合法邻居。

correcting what they see back to the nearest valid neighbor
▶ 3:28–3:37 · 观看片段
当前视频

28c3: The Science of Insecurity

输入识别必须先完整完成,再交给业务处理,避免半验证状态成为攻击者可编程的机器。

if you haven't recognized it don't goddamn process it

适用边界 纠错半径内的恢复不提供身份验证或攻击防护;语法识别也无法代替信道纠错。两种操作可在不同层组合。

Hacker News 评论

查看 HN 原评论 ↗