
Финальный проект по курсу «Безопасность и конфиденциальность» CS 600.443
Финальный проект по курсу «Безопасность и конфиденциальность» CS 600.443 | Осень 2018
Изначально я попытался использовать diff для создания патча. Я наложил патч так, как, по моему мнению, должно было быть, до того как посмотрел на настоящий патч. Файл encrypt.patch — это мой исходный патч, который я сделал с помощью diff. Однако когда мы попытались применить этот патч к freeBSD, он не был принят.
Вместо этого мне пришлось получить настоящий патч. Затем я изменил патч, чтобы реализовать исправление так, как я изначально считал правильным. Это работает, потому что патч включает весь путь.
В патче я просто проверяю длину по сравнению с MAXLENGTH. Если она больше этого значения, устанавливаю её в 0. Таким образом, это переходит в случай len = 0, который выдаёт ошибку. Это исправляет проблему!
Вот объяснение того, как применить патч в freeBSD. https://www.freebsd.org/security/advisories/FreeBSD-SA-11:08.telnetd.asc Просто используйте этот патч вместо получения настоящего. Он сработает, и вы больше не сможете воспользоваться переполнением буфера.