Don: JavaScript = Sicherheitsproblem?

Hallo Cracks,

Habe mir mal folgendes überlegt:

JavaScript wird bekanntlich im Klartext übertragen, d.h. jeder kann im Prinzip mitlesen, wenn er es kann (d.h. das nötige Know-How dazu hat).

Was nun, wenn irgendwo im Übertragungsweg z.B. ein Proxy-Server einen Client-Server-Datenverkehr abfängt und zum eigentlich vom Server gesendeten JavaScript-Code noch weiteren Code hinzufügt? Der würde doch dann vom Client mit den gleichen Rechten ausgeführt werden, wie der original vom Server stammende Code. D.h. der fremde Code könnte Cookies auslesen, Daten ausspioniern und weitersenden und und und. Wenn dann auch noch ActiveX auf dem Client aktiviert ist, dieser also eh schon offen ist wie ein Scheunentor, da dann gute Nacht...

Was meint ihr dazu? Ist JavaScript also ein echtes Sicherheitsproblem?

Don P

  1. Moin Moin!

    Was nun, wenn irgendwo im Übertragungsweg z.B. ein Proxy-Server einen Client-Server-Datenverkehr abfängt und zum eigentlich vom Server gesendeten JavaScript-Code noch weiteren Code hinzufügt? [...]
    Was meint ihr dazu? Ist JavaScript also ein echtes Sicherheitsproblem?

    Nicht größer als HTML über eine unverschlüsselte Verbindung. Auch in HTML könnte ein Proxy zusätzliches Javascript injizieren. Genau deswegen arbeitet jede gute Bank- und Shop-Site mit HTTPS, wodurch man einen von Dir beschriebenen Man-in-the-Middle-Angriff wenigstens erkennen kann.

    Dass HTML "unterwegs" manipuliert wird, kannst Du hier im Forum nachlesen, z.B. in den zwei oder drei aktuellen UMTS-Threads.

    Alexander

    --
    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
  2. Hallo Don,

    Was nun, wenn irgendwo im Übertragungsweg z.B. ein Proxy-Server einen Client-Server-Datenverkehr abfängt und zum eigentlich vom Server gesendeten JavaScript-Code noch weiteren Code hinzufügt? Der würde doch dann vom Client mit den gleichen Rechten ausgeführt werden, wie der original vom Server stammende Code.

    Ja und das sollten keine Rechte sein von denen irgend eine Gefahr ausgeht. Webseiten sind normalerweise nicht als so vertrauenswürdig zu betrachten, unverschlüsselte schon gar nicht.

    D.h. der fremde Code könnte Cookies auslesen, Daten ausspioniern und weitersenden und und und.

    Er könnte Cookies auslesen sicher, aber die werden ja ohnehin auch an den Server geschickt, können also abgehört werden. Das einzige Angriffszenario, das sich mir vorstellen könnte und das mit einfachem abhören nicht funktioniert, wäre eine JS-Anwendung die rein Clientseitig (vertrauliche) Daten verarbeitet. Gibt ja solche Steuerrechner und so Kram. Da könnte man vertrauliche Daten abgreifen, die sonst nur auf dem Client bleiben würden. Richtig kritische Anwendungen dieser Art kenne ich aber nicht.

    Wenn dann auch noch ActiveX auf dem Client aktiviert ist, dieser also eh schon offen ist wie ein Scheunentor, da dann gute Nacht...

    Wenn der Client unsicher ist, ändert das doch nichts. Es ist reichlich egal, ob jemand Deinen Rechner Angreift, indem er Dich irgendwie auf eine Seite lotst (davor kann man sich kaum schützen, ein paar durch Spaming gut in Google platzierte Ergebnisse und man bekommt genügend Besucher) oder indem er die übertragenen Daten manipuliert.

    Was meint ihr dazu? Ist JavaScript also ein echtes Sicherheitsproblem?

    Nein, schon gar nicht aus den von Dir genannten gründen.
    Ein Sicherheitsproblem kann es sein, weil eine Programmiersprache nunmal komplexer ist, als irgend welche Auszeichnungssprachen. Die Implementierung ist also wahrscheinlich Fehleranfälliger, jedenfalls für solche Fehler, die die Sicherheit betreffen. Bei einer Auszeichnungssprache kann es passieren, dass die Implementierung irgendwie zulässt, dass Maschinencode eingeschleust wird. Bei einer Programmiersprache reicht es, wenn irgendwelche APIs gefährliche Zugriffe ermöglichen. Wenn man dann auch noch Schnittstellen für lokalen Dateizugriff und ähnliche Sachen zur Verfügung stellt, braucht ein potentiell für Fehler anfälliges System um diese Rechte zu verwalten.
    Diese Dinge führen zu Sicherheitsproblemen mit Javascript, ich würde aber nicht sagen, dass diese Probleme nicht beherrschbar sind.

    Kritisch könnte das von Dir beschriebene Szenario nur sein, wenn sicherheitskritische Rechte Anhand von Domainnamen o.ä. vergeben werden.
    Dann könnte jemand die Daten einer Seite manipulieren, die Dateizugriffsrechte hat oder sowas.
    Solche Rechte sollten daher nur für signierte Inhalte vergeben werden.

    Grüße

    Daniel