28c3: The Science of Insecurity
28c3YouTube ↗
延伸阅读 3
意外的通用计算能力也可能成为攻击面 →PowerPoint展示原本用于展示的动画构造可以模拟任意转移函数;安全演讲则把输入处理的计算能力视为应受限的权限,解释为什么通信边界不应无意引入过强的执行能力。不可信输入进入处理路径前,边界应在哪里 →提示注入演示外部内容被误当成新指令;LangSec则展示在完整识别输入前交错执行处理逻辑,会产生攻击者可利用的状态转换。两者可作为输入边界设计的对照,不能据此推出相同攻击机制或相同修复办法。遇到无效输入,应当纠正还是拒绝? →信道纠错把接近合法码字的受扰数据解码为合法邻居;协议安全要求完整识别输入后再交给处理逻辑。两端都界定了合法消息,决定如何处理偏离时,需要先问面对的是随机误码还是主动构造的输入。
字幕解读
Meredith Patterson 将漏洞视作输入协议和消息格式的结构性问题:过于复杂、难以判定的输入语言会让不同实现产生分歧,并在解析与处理交织时暴露可编程的“怪异机器”。她用计算理论与 Chomsky 语言层级解释风险,建议把输入视为形式语言、从语法生成识别器,在处理前完整验证,并尽量限制协议的计算能力,确保通信双方对消息解释一致。
自动字幕 · 引文按字幕原文展示,可点时间戳回看片段。
内容要点
- 许多漏洞来自协议与消息格式要求实现解决不可判定或无法可靠完成的识别问题。
- 输入识别应与业务处理分离;先确认完整输入属于定义明确的语言,再把解析树交给内部逻辑。
- 协议应采用尽可能简单的输入语言,并让所有端点对消息含义保持计算等价;宽松接受和歧义会带来安全风险。
视频章节 6
- 把安全问题作为可预测的系统性问题
- 漏洞与输入格式设计
- 可信计算与输入识别
- 停机问题和不可判定性
- Chomsky 语言层级
- 跨系统解析一致性与协议设计
具体观点与证据 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 错词和专名错误。