Infidel Goes Wild
2 days ago
- 发现了一个由于ZIL编译器错误导致的Infidel(Infocom游戏)中的内存损坏野指针漏洞。
- 该漏洞影响管理无尽沙漠中物体的例程,这些例程会在表格间来回移动物品。
- 默认参数'TBL'被错误地设置为全局变量的索引(30)而不是其地址,导致写入错误的内存位置。
- 覆盖未使用的头字节,随后损坏缩写表,导致文本故障(例如,'the'变成'You')。
- 该漏洞极难发现;只有当玩家在沙漠中掉落超过8个物品时才会触发(由于沙埋机制)。
- 数十年未被发现;1984年修订版中未修复。
- 修复方法:移除默认值并显式初始化变量。
- 类似漏洞存在于PROP-TO-TBL例程中,但未被使用。