Folia
← 返回头版

经典冒险游戏《Infidel》发现40多年未被发现的内存溢出漏洞

Infocom公司1983年发行的交互式冒险游戏《Infidel》中存在一个严重的内存溢出漏洞1。该漏洞源于ZIL编译器在处理全局变量默认值时的错误,导致DESERT-TO-TABLE例程向错误的内存地址写入数据1。这一缺陷在原始版本和1984年版本中均存在,在游戏发行数十年间从未被发现1。

具体而言,ZIL编译器将TBL参数初始化为常量值30,而非DESERT-TABLE的正确地址111291。当玩家在游戏的无尽沙漠中放置9个物品时,这一错误就会被触发,数据写入地址30-63(本应未使用的区域),最终覆盖地址64及以后的缩写表数据1。这导致游戏文本输出出现混乱,如"You"被替代为"the"等异常现象,最终可能导致游戏崩溃1。根本原因在于Infocom的测试团队未在无尽沙漠场景中进行充分的对象放置测试1。


来源

  1. Hacker NewsInfidel goes wild

评论