
Abschlussprojekt für Sicherheit und Privatsphäre CS 600.443
Abschlussprojekt für Security and Privacy CS 600.443 | Herbst 2018
Ich habe ursprünglich versucht, diff zu verwenden, um einen Patch zu erstellen. Ich habe es so gepatcht, wie ich dachte, dass es sein sollte, bevor ich mir den echten Patch angesehen habe. encrypt.patch ist dieser ursprüngliche Patch, den ich mit dem diff erstellt habe. Als wir jedoch versuchten, diesen Patch auf freeBSD anzuwenden, akzeptierte er ihn nicht.
Stattdessen musste ich den echten Patch holen. Dann habe ich den Patch geändert, um den Fix so zu implementieren, wie ich es ursprünglich gedacht hatte. Das funktioniert, weil es den gesamten Pfad in den Patch einfügt.
Im Patch überprüfe ich einfach die Länge im Vergleich zu MAXLENGTH. Wenn sie größer ist, setze ich sie auf 0. Auf diese Weise fällt es in den Fall von len = 0, der einen Fehler auslöst. Das behebt es!
Hier ist eine Erklärung, wie man einen Patch in freeBSD anwendet. https://www.freebsd.org/security/advisories/FreeBSD-SA-11:08.telnetd.asc Verwenden Sie einfach diesen Patch, anstatt den echten zu holen. Es wird funktionieren, und Sie werden den Pufferüberlauf nicht mehr ausnutzen können.