[linux-l] Slightly off topic: Jagd auf Spam
Jan Krueger
jk at microgalaxy.net
So Okt 26 21:25:10 CET 2003
Hi Peter :)
On Saturday 25 October 2003 16:43, Peter Ross wrote:
(sinngemäß und stark verändert und verkürzt wiedergegeben)
Im einzelnen:
> - StackProtector, ProPolice, Randomization
Es wurde von Fachleuten gezeigt, daß diese Schutzmechanismen sich aushebeln
lassen. (Ich verzichte mal auf Referenzen, da ich mich grad für etwas anderes
interessiere habe ich sie Moment nicht zur Hand.)
> - W^X
Ist im Falle von OpenBSD "kooperativ" also vom Administrator und wie er die
Anwendung zusammenbaut abhängig, läßt sich also nicht systemweit "enforcen"
wie z.b. bei Linux. W^X kann nicht schützen was z.b. innerhalb einer VM
abläuft (Java, Erlang) und Auswirkungen auf das System haben kann. W^X (und
damit auch BeLUG Patent 00022003) ist kontraproduktiv bei Hochsprachen,
welche es erlauben, z.b. um eine hohe Verfügbarkeit zu erreichen, Code zur
laufzeit zu ersetzen ([Native-]Lisp, [Native-]Erlang als Beispiel)
[BTW eine faktische, praktische Größe aus dem realen Erlang Leben: Ericsson
AXD 301, an ATM switch with 99.9999999 percent reliability (9 nines, or 31
ms. downtime a year), which has captured 11% of the world market. The AXD 301
system includes 1.7 million lines of Erlang.]
Des weiteren ist W^X kontraproduktiv bei Sprachen welche es erlauben komplette
Funktionen als Parameter zu übergeben (nicht nur als Referenz) oder gar
Funktionen die Funktionen generieren, welche wiederum Funktionen generieren
usw. (zb. lernende, sich selbst evolutionierende Systeme).
Ich erinnere mich von zumindest theoretischen Ansätzen gelesen zu haben, wie
man W^X aushebeln kann.
> - grsecurity, chflags, capabilities, acl, RSBAC, IDS, *-Scanner, *-Filter,
> Firewalls ...
... fügen einem System ein hohes Maß an Komplexität hinzu. Firewall Regeln,
Policies jeglicher Art usw. sind nicht trivial und man kann auf den
entsprechenden Mailinglisten/Foren die Administratoren fluchen lesen. Und
keiner kann sich sicher sein, daß er wirklich alles im Griff hat. Hat die
neue Kernelversion einen syscall verändert, hinzugefügt, der von der Policy
noch nicht/unvollständig/falsch erfasst wird? Hier "hilft" auch ein Blick in
die Windows-Welt. Viele Windows-Admins sagen: "policies, cool feature" und
wenn sie die Policy erstellen müssen: "ahh, its so complicated, sh* policy
editor, usw." und wenn sie nach einem Jahr die Policy ändern müssen: "sh* f*
f* f* Policy! Its better, easyer, faster to create a new one." und auch dann
dauert es wieder Tage bis sie fertig ist. Das ist mit acls, RSBAC und
grsecurity usw. nicht viel anders.
über den Sinn und Unsinn von chflags kann man sich streiten. Es ist paktisch
um sich als root vor Dummheiten zu schützen.
> - jails, chroot, UML, VM´s, Maschinen-Partitionierung,
> - privilege separation ...
Apache, php und ähnliche komplexe Konstellationen mit chroot absichern zu
wollen bekommt schnell masochistischen Charakter. Dabei war chroot noch nie
wirklich sicher (wirkt ja nur auf den Namespace), mit jails ist es etwas
besser. UML, VM's, Partitionierung kann enorm helfen die Integrität einzelner
Dienste zu sichern. Gleichzeitig klingt das auch irgendwie nach "Microkernel"
mit entprechend aufgesetzten Servern (Server hier im Microkernel-Sinne
gemeint) oder "Exo-Kernel"
> - summasummarum ...
... sind das alles Technologien welche den ungeheuerlichen Aufwand
verdeutlichen, welcher betrieben wird um die Symptome zu fixen an Stelle die
Ursachen zu beseitigen.
> Die Kombination solcher Mittel fuehrt schon sehr weit.
Du hast recht. Mir jedoch geht das mit den Mitteln zu weit und ist, meiner
Ansicht nach, eher geeignet den Admin in die Klappsmühle zu befördern als
irgendwas abzusichern.
> Um mit so einem
> Rechner etwas anzustellen, musst Du ein halbes Dutzend Sicherheitsluecken
> haben, um soweit zu kommen, dass Du tun und lassen kannst, was Du willst.
Eben nicht, es reicht immer noch eine einzige Sicherheitslücke aus, wie vorher
auch. Und meiner Ansicht nach wird die Wahrscheinlichkeit für eine
Sicherheitslücke durch die enorme zusätzlich eingebrachte Komplexität nicht
verringert, eher die Wahrscheinlichkeit für einen administrativen Fehler und
darauffolgende Sicherheitslücke erhöht. Menschen sind immer noch die größten
"Schwachstellen" bei dem ganzen und das liegt nicht an den Menschen! sondern
an den menschenunfreundlich gestalteten, hyperkomplexen Technologien.
Schicht 8 Fehler und so, hatten wir ja auch neulich in der Liste. Anders
ausgedrückt: Welche der genannten Technologien machen es dem Menschen gerecht
sein System abzusichern? Warum muß er sein System überhaupt absichern? Warum
ist es nicht einfach sicher?
> Die Frage hier ist, wieweit kannst Du das noch so gestalten, dass nicht
> der Nutzer zwei Jahre braucht, bis der Rechner ans Netz geht..
Genau. Nicht der Nutzer ist falsch, sondern die Technologie, wenn das System,
wenn es sicher sein soll, 2 Jahre zum booten braucht.
> Die Spammer im genannten Text waeren da schon dran gescheitert.
Er hätte etwas anderes gefunden, zum beispiel auf Schicht 8. Es gibt einfach
zu viele die an einer "Special Offer" interessiert sind. Das ist meiner
Ansicht nach irgendwo auch ganz natürlich und verständlich. Damit ergibt sich
Spam als ein Nicht-Technisches Problem welches sich auch in meinem
Blech-Briefkasten findet. Somit kann bei der Verhinderung von Spam die
Technik allenfalls unterstützenden Charakter haben.
Folgend möchte ich meine bisherigen Erkenntnisse zusammenfassend und ausholend
darlegen. Wir, im Sinne von OpenSourceCommunity oder zumindest einige/viele
davon, nutzen oder streben nach:
-posix, einen inkonsistenten, komplizierten, benutzerunfreundlichen (mit zb.
Programmierern als Nutzer), unsicheren Standard
-single unix spezifikation, s.o. (mit Nutzern als Nutzer)
-c, c++, unsichere Programmiersprachen
-std c-lib, c++-lib mit unsicheren funktionen und tückischen Tücken
-monolytische kernel, die Kompromittierung des (ausreichend komplizierten)
Netzwerk-Stacks/Treibers reicht aus um alles mit Kernelrechten machen zu
können und/oder das System außer Gefecht zu setzten, von den noch viel
zahlreicheren lokalen Möglichkeiten ganz zu schweigen (welche sich hier und
da [php] auch übers Netz lassen)
-diverse andere, manchmal selbst kreierte, Standards ("Kompatibilität")
welcher Benutzerfreundlichkeit und Sicherheit im Wege stehen
-schmeißen das alles in einen großen Topf und ahmen nach, was Microsoft/Apple
vor machen ohne dabei aus deren Fehlern zu lernen (ich sag nur: KDE +
Konqueror, Gnome + CORBA)
-ignorieren organisatorische Probleme (Softwareverteilung,
Entwicklungsprozess)
-QA (Qualitätsicherung) existiert häufig nicht wirklich. Die QA von
Rotkäppchen ähnelt mir viel zu stark der von MS, Susie wird nicht viel anders
sein. Sämtliche offenen Projekte haben keine wirkliche, FreeBSD
eingeschlossen (siehe ARP-Problem in *-STABLE vor nicht zu langer Zeit).
Debian sticht positiv hervor und erreicht Qualität durch Opferung von viel
Zeit (weswegen in "aktuellen" Debian Releases häufig uralte Software ist, was
man wiederum auch als Qualitätsmangel betrachten könnte, je nach Veranlagung)
-hinzu kommen soziale Probleme, welche bei den verschiedenen Projekten
beobachtet werden können
-und so weiter und so weiter ...
Was schließen läßt, das sämtliche Sicherheitsprobleme (im weitesten Sinne,
Softwareverteilung mit eingeschlossen) mit denen MS konfrontiert ist und die
sich auch oder gerade aus der enormen Verbreitung von Windows ergeben in der
OSS-Community ungelöst sind weswegen es bei einem umgekehrten Verhältnis (95%
OSS und 5% Windows/Apple) keineswegs besser aussehen würde.
Ich möchte sogar soweit gehen und behaupten, daß die Spammer-Geschichten
welche wir dann lesen könnten wesentlich vielfältiger und unterhaltsamer
wären. Ganz zu schweigen von ungefixten Konqueror-Sicherheitslücken (Bugs,
welche sich wegen der enormen Komplexität nur schwer fixen lassen sind
sicherlich ein Grund für die langen Verzögerungen für Fixe bei MS und würden
OSS genau so treffen, ähm treffen OSS genau so. Ich möchte an den letzten
heap-overflow [an sich ein alter Hut und wohl bekannte Art von
Sicherheitsproblemen] in OpenSSH erinnern [Wenn ich das richtig verstanden
habe war er sehr schwierig zu finden auf Grund der in OpenSSH gegebenen
Komplexität, wirkte also in Verbindung mit anderem code innerhalb openssh´s],
in einer uralten Datei namens: buffer.c
[Manch einer möge behaupten, daß schon der Name der Datei verdächtig ist und
zu besonderer Vorsicht und Bedachtsamkeit mahnt, ein anderer möchte
vielleicht die Frage nach der Wirksamkeit der auf OpenBSD beworbenen
Code-Audits stellen, wieder andere mögen nach dem Wert von "open" fragen,
wenn eine derartige Lücke in einer derart verdächtigen Datei derart lange
unentdeckt bleibt.] Erinnert sei auch an Sendmail in der default Installation
so mancher BSD's und Linuxe.).
Die mail ist lang genug drum strebe ich danach Sie mit folgenden Sätzen zu
beenden:
Von der technischen Seite her geht es anders und das haben so manche schlauen
Leute gezeigt, Code geschrieben und sogar Maschinen gebaut (zb. Lisp
Maschinen, AXD 301, und andere). Ob das "andere" im realen Leben besser ist,
läßt sich schwer sagen, so lange es da nicht genutzt wird (mal vom AXD 301
abgesehen und mit Fokus auf den PC).
Ursprünglich war ich der Überzeugung, daß OpenSource gleichbedeutend ist mit
ungebremster Innovationskraft welche zum Nutzen der Menschen wirksam wird.
Ich sehe mich getäuscht und Stelle fest, daß Kompatibilitätsdrang, Trägheit
("we always did it like that, there is no need to change") stärker sind als
Innovationskraft. So manche gute Idee wurde in den verschiedenen
Diskussionsforen in einem flammenden Inferno zu Asche verbrannt und kühlte
danach schnell ab (manchmal auch aus sozialen Motiven heraus, zb. Positions-
oder "Machterhalt", Soziale Mißverständlichkeiten führen zu einer
Zersplitterung der Community [siehe zb. BSD-forks und deren Motivationen]).
Ergo beschränkt sich Innovation zu häufig in hohem Maße auf die dem
Opensource Programmierer naheliegenden ultra-technischen Dinge (z.b. Kernel,
CORBA) welche weit weg vom eigentlichen potentiellen Nutzer (Nutzer, nicht
Programmierer) sind welcher ganz legitime Motive haben mag, wie zum Beispiel
kürzlich in dieser Liste zu lesen: "Ich mache Webdesign und nicht Linux."
Weiterhin konnte ich beobachten, daß sich die innovativen Leistungen (hier die
wenigen revolutionären) von OSS letztlich aus der Kompetenz (umfassend, also
sozial, organisatorisch, technisch, usw.) einzelner Individuen ergibt.
2003 wurde von Optimisten als das Jahr des Linux-Desktop angepriesen. Immerhin
gute 2% hat Linux ja. So wird wohl 2004 das Jahr des Linux Desktop werden.
Und wenn nicht 2004, dann 2005 oder 2006, spätestens dann wird www.xpde.com
inklusive Registry Editor ( http://www.xpde.com/shots/regedit.png ) wirklich
gut nutzbar sein. Moment, dann gibts ja schon wieder Longhorn ...
und kurz darauf Linuxhorn.org oder so und so weiter und so weiter ...
Der Nachahmungstrieb wird ersichtlich, die Innovation bleibt unsichtbar.
Ja, der Linux Netzwerk-Stack ist schneller als der von Windows. Aber wen zum
Kuckuck interessiert das? 98% der Desktop-Nutzer ist das irgendwie egal
scheint mir (zumal das Limit für die Allgemeinheit häufig vom ?DSL oder Kabel
oder Modem oder dergleichen gesetzt wird, weit entfernt von Performance).
Huch, die mail wird immer länger ...
... langsam muß ich wirklich Schluß machen :) und schließe endgültig mit
folgenden Sätzen:
Also genug Kritik, mehr Lob und mehr Verbesserungsvorschläge hebe ich mir für
später auf, eventuell gar zum Fortschritt hin wirkende Taten für viel
später ..., ähm, behalte ich mir vor ;)
Gruß
Jan Krüger
Nordhalbkugler
Mehr Informationen über die Mailingliste linux-l