
Lehrreiche Patch-Implementierung für den FreeBSD telnetd Pufferüberlauf (CVE-2011-4862) mit schrittweiser Erklärung des Fixes und manuellen Patchanweisungen.
Ursprünglich habe ich versucht, mit diff 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 diff erstellt habe. Als wir jedoch versuchten, diesen Patch auf freeBSD anzuwenden, wurde er nicht akzeptiert.
Stattdessen mussten wir den echten Patch holen. Ich habe dann den Patch geändert, um den Fix so zu implementieren, wie ich es ursprünglich für richtig hielt. Das funktioniert, weil es den gesamten Pfad in den Patch einfügt.
Im Patch überprüfen wir einfach die Länge im Vergleich zu MAXLENGTH. Wenn sie größer als das ist, setzen wir sie auf 0. Auf diese Weise fällt es in den Fall von len = 0, was 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.