安全与隐私 CS 600.443 期末项目 | 2018年秋季
我最初试图用 diff 来制作补丁。在查看真正的补丁之前,我按照自己认为的方式打了补丁。encrypt.patch 就是我用 diff 制作的那个原始补丁。然而,当我们尝试将这个补丁应用到 freeBSD 时,它没有被接受。
于是,我不得不获取真正的补丁。然后我修改了补丁,按照我最初认为的方式实现了修复。这样做之所以有效,是因为它将整个路径放入了补丁中。
在补丁中,我只是将长度与 MAXLENGTH 进行比较。如果它大于 MAXLENGTH,就将其设为 0。这样一来,它就落入了 len = 0 的情况,从而报错。这样就修复了!
这里有一份关于如何在 freeBSD 中应用补丁的说明。https://www.freebsd.org/security/advisories/FreeBSD-SA-11:08.telnetd.asc 只需使用这个补丁,而不要去获取真正的那个。它会起作用,你将再也无法利用这个缓冲区溢出漏洞。