aktive Dokumente: Teile des Inhalts sind Code-Fragmente, die auf Klienten-Maschine (Maschine des Betrachters) ausgeführt werden sollen (dynamischer Inhalt)
Ausführung unbekannten, möglicherweise fehlerhaften und evtl. sogar böswilligen Codes ist potentiell gefährlich
betrifft: Programme aus dem Netz (u.a. Helper Applications, Plug-ins), von der CD ...
außerdem: data-driven attacks
speziell konstruierte Daten bewirken gezielte oder nicht gezielte Fehlreaktion
eines lokalen, an sich nicht böswilligen Programms (WWW-Browser, Mail-Klient, Server-Prozeß, ...)
des Nutzers ("Geben Sie doch mal bitte Ihr Paßwort ein ...")
der Hardware (F00F-Bug im Pentium)
Ausnutzung von Bugs: sehr häufig fehlende Kontrolle von Bereichsgrenzenüberschreitung (bounds checking); ermöglichen Modifikationen des Laufzeit-Stacks
Manipulationen am lokalen System:
Informations-Vernichtung
Informations-Verfälschung
trojanische Pferde zum späteren widerrechtlichen Zugang
Übermittlung sensitiver Informationen über das Netz an unberechtigte Dritte (Konkurrenten, Geheimdienst, ...)
Netscape:
Pseudo-Zufallszahlen-Generator untauglich
Java-Applets können Verbindungen zu beliebigen Internet-Rechnern aufbauen
Java-Applets können beliebigen Maschinen-Code ausführen
Angreifer kann beliebige Mails im Namen des Nutzers versenden
MS Internet Explorer:
Ausführung beliebiger Programme durch gezielte Registry-Manipulationen
Browser Crash (Informationen stammen von der BUGTRAQ-Liste):
Idee nicht ganz neu: Safe Tcl (ca. 1993) für aktive Mails
Java/JavaScript auf vielen WWW-Seiten genutzt, von modernen Browsern unterstützt
Java: universelle Programmiersprache
portabler Bytecode wird von virtueller Maschine (JVM) interpretiert
JavaScript: Interpretation des Quelltextes durch WWW-Browser
speziell für diesen Zweck entworfen
bieten neue Möglichkeiten, z.B. Java-Applets für Electronic Banking
bergen aber auch neue Risiken
Java:
Safety: automatisches Speichermanagement, Bereichsgrenzentest, keine Pointer, strenges Typkonzept, Ausnahmebehandlung, einfache Vererbung
bewahrt Programmierer vor vielen klassischen Fehlern (z.B. Pufferüberlauf)
verschiedene Techniken schränken Möglichkeiten des Bytecodes ein:
Sandbox (keine direkter Zugriff auf Hardware und Betriebssystem)
Security Manager (entscheidet über Zulassung "gefährlicher" Operationen)
ClassLoader
Bytecode Verifier
speziell Applets sind in der Regel starken Restriktionen unterworfen
durch digital signierte Applets werden Restriktionen teilweise gezielt gelockert
Java-Schwächen:
zumeist Bugs
aber auch konzeptionelle Probleme, z.B.
Fehlen einer formalen Spezifikation des Sicherheits-Modells
Sicherheit des Gesamtsystems hängt von Integrität des Typ-Systems ab (Security Manager und Bytecode Verifier müssen absolut korrekt sein)
Logging von Applet-Aktivitäten fehlt oft
JavaScript:
Programme sollten relativ sicher sein, da in der Regel starken Restriktionen unterworfen (z.B. keine direkten Zugriffe auf den Klienten-Rechner)
dennoch hat es in verschiedenen Implementierungen Sicherheits-Probleme gegeben, z.B.
Denial-of-Service Attacks (DoS): hohe CPU-Last, riesiger Speicherbedarf, ...
Verschicken gefälschter E-Mail im Namen des Klienten
Zugriff auf E-Mail-Adressen und sensitive Daten (z.B. History der Klienten, Paßwörter im Preferences-File)
Empfehlung: Java/JavaScript standardmäßig im Browser deaktivieren
Plug-ins: als Teil des Browsers ausgeführter Machinencode; gestattet Browser-Erweiterungen
manuell heruntergeladen
ActiveX: MS-Technologie zum Herunterladen von ausführbarem Code über das Netz
Programme heißen ActiveX controls und können in Java oder Maschinencode geschrieben sein
ActiveX controls werden automatisch heruntergeladen, ausgeführt und wieder entfernt
evtl. schädliche Effekte von Plug-ins und ActiveX controls kaum ohne Ausführung feststellbar
mitunter erst sehr spät entdeckt
Authenticode: MS-Technologie zur Sicherstellung der Integrität und Authentizität von Code auf der Basis digitaler Signaturen
gültige Signatur kann über Ausführbarkeit und Rechte des Codes entscheiden
signierter Code kann Bugs haben und/oder Sabotage-Software sein !!!
ActiveX-Mißbräuche möglich, z.B. Geld-Transaktionen mit Quicken und einem böswilligen, in Visual Basic geschriebenen ActiveX-Control
gezeigt von Lutz Donnerhacke u.a.: https://www.iks-jena.de/mitarb/lutz/security/activex.html
auch Helper-Applikationen stellen großes Sicherheitsrisiko dar
verschiedene Programme ungeeignet, speziell Interpreter mehr oder minder universeller Sprachen
konkrete Beispiele: MS Word/Excel (wegen Visual Basic), Perl, Python, Tcl (Abhilfe: Safe Tcl / safe interpreters), Unix-Shell, Postscript-Interpreter (Ghostscript im Modus "safe" akzeptabel)
Stack-Smashing-Attacken
Bsp.: Smashing The Stack For Fun And Profit [http://www.fc.net/phrack/files/p49/p49-14] Phrack Magazine Nr. 49
Race Conditions
Bsp.:
SSH-Agent:
http://www.cs.hut.fi/ssh-archive/messages/961011-085826-14539
lokale Kopie: 961011-085826-14539Kommando ps unter Solaris 2.x: ftp://ftp.cert.dfn.de/pub/csir/cert/cert_advisories/CA-95:09.Solaris.ps.vul
Zugriffe auf fremde Daten durch Verfolgung symbolischer Links
Bsp.: SSH-Agent bei 1.2.21: SNI-23: Vulnerability in ssh-agent [http://www.secnet.com/sni-advisories/sni-23.ssh.agent.advisory.html]
Patch von Solar Designer für Linux verhindert dies:
Interpretation von Kommandozeilenargumenten als Shell-Kommandos
Bsp.: X-Server als Setuid-Root-Programm, Option -xkbdir