Debian-Sicherheitsankündigung
screen -- Pufferüberlauf in »screen« beim Kopieren des Gecos-Felds
- Datum des Berichts:
- 20. Feb 1997
- Betroffene Pakete:
- screen
- Verwundbar:
- Nein
- Sicherheitsdatenbanken-Referenzen:
- Im Augenblick ist keine weitere externe Sicherheitsdatenbank-Referenz verfügbar.
- Weitere Informationen:
-
Der Überlauf existiert, aber screen gibt die Root-Rechte ab, bevor der Code ausgeführt wird.
Originalbericht eingereicht von: Khelbin <khelbin@connix.com>
Screen 3.07.02, falls setuid root installiert (was normalerweise der Fall ist), ist zumindest auf bestimmten Plattformen anfällig für einen Pufferüberlauf. Ich habe mir nicht den gesamten Quelltext angeschaut, aber beim schnellen Durchschauen ist mir aufgefallen, dass attacher.c Folgendes durchführt:
struct passwd ppp; char fullname[100]; strcpy(fullname, ppp->pw_gecos);
Ich war schnell in der Lage, einen Angriff zu schreiben, der allerdings hier unter BSDI 1.1 nicht funktionierte, da chpass/chfn bestimmte Zeichen nicht akzeptieren. Daher führt das Einlesen von Shellcode in das "Full Name"-Feld zu einer Fehlermeldung "Illegal Character found in the Full Name field, re-edit [y]?" oder ähnlich.
Jedes Betriebssystem oder jede Version von chfn/chpass, die ihre Eingabe nicht auf 'ungültige Zeichen' oder Länge der in das Feld eingegebenen Information überprüft (BSDI 1.1 überprüft nicht die Länge, sondern nur auf ungültige Zeichen), kann verwundbar sein (ich habe noch nicht überprüft, ob die suid root Privilegien bereits aufgegeben wurden, ich werde das testen, indem ich den Überlauf mit meiner Shellcode-Zeichenkette erzeuge).
Zur Demonstration habe ich nur meine Shellcode-Zeichenkette in eine Umgebungsvariable geschrieben (mit den NOPs und Rücksprungadressen zu den NOPs) und diese Umgebungsvariable in eine Datei ausgegeben. Dann nur einfach diese Datei in das gecos-Feld einlesen, wenn man in chpass/chfn ist.