HackerTube English?
程序的表达能力 →

输入从哪一步变成了指令?

拼错的表达式有时恰好合法;看似只装数据的格式也可能执行计算。顺着输入往里走,找出究竟是谁决定它的含义。

本文的问题 · 4
  1. 语法功能相互作用会让笔误变成合法程序
  2. 遇到无效输入,应当纠正还是拒绝?
  3. 意外的通用计算能力也可能成为攻击面
  4. 不可信输入进入处理路径前,边界应在哪里

语法功能相互作用会让笔误变成合法程序

Crockford展示return换行被分号插入、块与标签语法组合掩盖;Hettinger担心类型标注和数字分隔符等新增语法让原本报错的笔误变成有效程序。连接在错误可检测性,而非泛泛反对语言增长。

对照原文与时间戳 · 2
all these things tend to work together to mask errors.
JavaScript: The Good Parts · ▶ 33:55–34:22
features that individually seem to make sense but brought together might be terrible
Modern Dictionaries by Raymond Hettinger · ▶ 63:47–64:01

两段属于各自演讲时期的语法案例;不推出新增语法整体有害或现代版本仍有同样全部限制。

遇到无效输入,应当纠正还是拒绝?

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

对照原文与时间戳 · 2
correcting what they see back to the nearest valid neighbor
But what are Hamming codes? The origin of error correction · ▶ 3:28–3:37
if you haven't recognized it don't goddamn process it
28c3: The Science of Insecurity · ▶ 25:04–25:15

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

意外的通用计算能力也可能成为攻击面

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

对照原文与时间戳 · 2
essentially imitate any transition function of any other touring machine
On The Turing Completeness of PowerPoint (SIGBOVIK) · ▶ 4:07–4:17
treat input handling computational power as privilege and reduce that privilege
28c3: The Science of Insecurity · ▶ 34:49–34:59

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

不可信输入进入处理路径前,边界应在哪里

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

对照原文与时间戳 · 2
prompt injection is about hijacking the large language model giving it what looks like new instructions
[1hr Talk] Intro to Large Language Models · ▶ 52:11–52:21
if you haven't recognized it don't goddamn process it
28c3: The Science of Insecurity · ▶ 25:04–25:15

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

读完再想一步

在你的系统中找一处解析边界:遇到含糊输入,是拒绝、修复,还是执行?