Buffertspillet finns, men screen överger rootprivilegierna innan koden utförs.
Ursprungligen rapporterat av: Khelbin <khelbin@connix.com>
Screen 3.07.02 är, när det är setuid root (vilket det vanligtvis är), [känsligt] för ett buffertspill åtminstone på vissa plattformar. Jag har inte läst genom hela källkoden, utan bara vid en snabb titt noterat att attacher.c gör följande:
struct passwd ppp;
char fullname[100];
strcpy(fullname, ppp->pw_gecos);
Jag lyckades koka ihop ett snabbt utnyttjandeprogram, men det fungerande inte här på BSD 1.1 eftersom chpass/chfn inte tillåter vissa tecken. Därför gav en inläsning av skalkod i fullnamns-fältet ett felmeddelande "Character found in the Full Name field, re-edit [y]?" eller något liknande.
Alla operativsystem eller versioner av chfn/chpass som inte testar mot "ogiltiga tecken" eller längden på informationen innan den läggs in i fältet (BSDI 1.1 testar inte längden, bara ogiltiga tecken) kan vara sårbart (jag testade inte om det hade övergett root-behörighet ännu, jag tänkte göra det genom att spilla det med min skalkod).
Vad jag gjorde var att lägga min skalkod i en ENV-variabel (med NOP:ar och returadressen tillbaka till NOP:arna) och ekade ENV-variabeln till en fil. Läs sedan bara in den filen när du är i chpass/chfn som ny gecos-information.