
Implementazione educativa di patch per il buffer overflow di telnetd su FreeBSD (CVE-2011-4862) con spiegazione passo-passo della correzione e istruzioni per l'applicazione manuale della patch.
Inizialmente ho provato a usare diff per creare una patch. Ho applicato la patch nel modo che pensavo fosse corretto, prima di guardare la patch reale. encrypt.patch è questa patch originale che ho creato con il diff. Tuttavia, quando abbiamo provato ad applicare questa patch a freeBSD, non l'ha accettata.
Invece, abbiamo dovuto recuperare la patch reale. Ho quindi modificato la patch per implementare la correzione nel modo che inizialmente pensavo dovesse essere. Questo funziona perché inserisce l'intero percorso nella patch.
Nella patch, controlliamo semplicemente la lunghezza rispetto a MAXLENGTH. Se è più grande, la impostiamo a 0. In questo modo, cade nel caso di len = 0, che genera un errore. Questo risolve il problema :-)
Ecco una spiegazione su come applicare una patch in freeBSD. https://www.freebsd.org/security/advisories/FreeBSD-SA-11:08.telnetd.asc Usa semplicemente questa patch invece di recuperare quella reale. Funzionerà e non sarai più in grado di sfruttare il buffer overflow.