| |
 |
Sicherheitsprobleme bei der Linux-Entwicklung |
|
 |
Veröffentlicht durch xilef am Dienstag 14. Januar, 12:09
Aus der propritäre-Software-für-OSS-Projekte Abteilung
|
|
 |
 |
 |
cruz schreibt "Es gab anfangs viele Unkenrufe, als Linus eine propitäre Software (Bitkeeper) zur Versionskontrolle des Linux-Sourcecodes "durchboxte".
Und die Skeptiker scheinen recht behalten zu haben, es gibt wohl eine Sicherheitslücke, die es einem Angreifer erlaubt, Bitkeeper-Rechte auf einem Server zu erlangen und der Hersteller reagiert nicht...
Mehr bei: pro-linux"
|
|
 |
 |
< Irak kappt Internet und E-Mail nach Spam der US Army | Druckausgabe | Viele Cybercrime-Meldungen > | |
|
Diese Diskussion wurde archiviert.
Es können keine neuen Kommentare abgegeben werden.
|
|
|
 |
|
 |
 |
|
 |
 |
 |
"Pah, ist uns scheissegal *Sicherheitslueckerauspalafer*"
-> Folgen(c):
- Gehackte Bitkeeper Repositories
- Veraenderte Sourcen
- Linux Entwickler duerfen Bitkeeper nicht mehr frei nutzen
Den Rest darfst du dir ausmalen *Malstifterueberreich*.
----------------
Wer gegen ein Minimum
Aluminium immun ist, besitzt
Aluminiumminimumimmunität
|
|
 |
 |
|
 |
|
 |
 |
|
 |
 |
 |
Gegenfolgen:
- Trügerische "Sicherheit"
- Trotzdem gehackte Bitkeeper Repositories
- Trotzdem veraenderte Sourcen
Mittlerweilen sind doch unzählige Hacker auf der Suche nach diesem (nicht veröffentlichten) Exploit.
Ist das nun Re - Revers - Engineering ??
Besser es kennen den Bug alle statt nur die "Bösen" ;-)
3b
Unknown: "If Linux doesn't have the solution, you have the wrong problem."
|
|
 |
 |
|
 |
|
 |
 |
|
 |
 |
 |
Zur Race-Condition: wo sieht er das Problem? Natürlich ist das eine Race-Condition, die tritt in der Form massiv auf in diversen Programmen. Die Zugriffsrechte 0666 sind natürlich ein Problem. Das lstat() gemacht wird ist sogar löblich. So kann niemand das File sonstwohin schicken lassen.
Zum Remote command: nur weil man diff aufruft und falsche Optionen übergeben werden könnten, ist das noch lange kein Exploit. Wenn die Parameter korrekt behandelt werden, ist das gar kein Problem. Etliche Programme machen sowas.
Hier scheint jemand irgendwas zu wissen zu glauben, das so erstmal falsch ist. Entweder ist seine Angabe falsch oder er hat keine Ahnung.
--
$ cd /dos/c/MICROSO~1
$ rm -rf *
|
|
 |
 |
|
|
 |
|
 |
 |
Von Anonymer Feigling am Tuesday 14. January, 16:08 MEW (#4)
|
|
 |
 |
 |
Wo das Problem ist? Durch diese Taktik kannst Du _jedes_ File im System lesen. Mit jedes verstehe ich auch jedes, nicht nur die im /tmp Dir, da die Uebergabe von Dateien nicht geprueft wird.
Und nein! Nicht jede Applikation macht so ein Muell und wenn, dann zeugt es von einer absoluten Unwissenheit des Programmierers. In der Regel wird das Setzen von Stats nicht mittels PID, sondern durch mkstemp()-Call durchgefuehrt.
Und nein, Zugriffsrechte 0666 sind nicht ein Problem, sondern eine Luecke (die BitMover nach dem Bericht endlich behoben hat). Schau Dir die Files im /tmp an. Faellt dir etwas auf? ;)
|
|
 |
 |
|
 |
|
 |
 |
|
 |
 |
 |
Wo das Problem ist? Durch diese Taktik kannst Du _jedes_ File im System lesen. Mit jedes verstehe ich auch jedes, nicht nur die im /tmp Dir, da die Uebergabe von Dateien nicht geprueft wird.
Wer kann die Dateien lesen? Jemand, der im /tmp eine Datei erzeugen kann unter dem passenden Namen. Also wer das kann, kann sowieso alle Dateien im System schon lesen - er muß dafür eh auf der Maschine sein.
In der Regel werden im übrigen sehrwohl die PID in den meisten Fällen rangezogen - was immer Du mit "setzen von Stats" meinst. Dir scheint die Bedeutung von Race-Condition nicht ganz klar: "zwischen den lstat() Calls und dem open() danach kann wer weiß was passieren." Da hilft Dir auch ein anderer Dateiname nicht wirklich weiter.
--
$ cd /dos/c/MICROSO~1
$ rm -rf *
|
|
 |
 |
|
 |
|
 |
 |
|
 |
 |
 |
- diff als privilegierten User mit sh -c "diff ..." ist sehr wohl exploitbar und ein Sicherheitsrisiko.
Korrekt waere ein fork/exec.
- Der lstat ist ueberfluessig (wie richtig bemerkt
ist dies eine Race-Kondition; also weglassen).
Der Artikel hat dies korrekt erklaert. Er ist auch
in sehr einfach verstaendlichem Englisch geschrieben.
|
|
 |
 |
|
 |
|
 |
 |
|
 |
 |
 |
lstat() weglassen ist auch ein Problem, denn ein solcher open() würde einem Link brav folgen und somit die Datei sonstwohin schreiben. Deswegen wohl auch der lstat(), um zu erkennen, ob es da einen Link schon gibt.
Zu diff: sind die wirklich so wahnsinnig, das als priviligierten User laufen zu lassen? Doch wohl nur als der Owner der Repository. Außerdem läuft der Diff ja vermutlich nur auf Dateien, die bereits eingecheckt wurden - und da sollte deren Code ja wohl zu fähig sein, illegale Zeichen rauszufiltern, die für Dateinamen ohnehin keinen Sinn machen (also alles nicht Buchstabe, Zahl und einfache Interpunktion). Natürlich währe ein fork() und darin ein exec*() der bessere Weg.
--
$ cd /dos/c/MICROSO~1
$ rm -rf *
|
|
 |
 |
|
|
|