Obwohl AIR-Anwendungen mithilfe von Webtechnologien erstellt werden, ist es für Entwickler wichtig, zu beachten, dass sie nicht innerhalb der Sicherheits-Sandbox des Browsers arbeiten. Das bedeutet, dass es möglich ist, AIR-Anwendungen zu erstellen, die das lokale System schädigen können, sei es absichtlich oder versehentlich. AIR versucht, dieses Risiko zu minimieren, es gibt jedoch immer noch Möglichkeiten, Sicherheitsverletzungen herbeizuführen. In diesem Abschnitt werden wichtige potenzielle Sicherheitslücken behandelt.
Risiken beim Importieren von Dateien in die Anwendungs-Sandbox
Dateien, die sich im Anwendungsverzeichnis befinden, werden der Anwendungs-Sandbox zugewiesen und verfügen über sämtliche Berechtigungen der Laufzeitumgebung. Anwendungen, die in das lokale Dateisystem schreiben, sollten in
app-storage:/
schreiben. Dieses Verzeichnis besteht separat von den Anwendungsdateien auf dem Computer des Benutzer, daher werden die Dateien nicht der Anwendungs-Sandbox zugewiesen und stellen ein vermindertes Sicherheitsrisiko dar. Entwicklern wird empfohlen, Folgendes in Betracht zu ziehen:
-
Schließen Sie eine Datei nur dann in eine AIR-Datei (in die installierte Anwendung) ein, wenn dies wirklich erforderlich ist.
-
Schließen Sie eine Skripterstellungsdatei nur dann in die AIR-Datei (in die installierte Anwendung) ein, wenn deren Verhalten vollkommen klar und vertrauenswürdig ist.
-
Schreiben Sie keinen Inhalt in das Anwendungsverzeichnis und verändern Sie keinen dort abgelegten Inhalt. Die Laufzeitumgebung verhindert, dass Anwendungen mithilfe des
app:/
-URL-Schemas Dateien und Verzeichnisse schreiben oder ändern, indem eine SecurityError-Ausnahme ausgegeben wird.
-
Verwenden Sie keine Daten aus einer Netzwerkquelle als Parameter für Methoden der AIR-API, die möglicherweise die Codeausführung zur Folge haben. Dazu gehört auch die Verwendung der
Loader.loadBytes()
-Methode und der JavaScript-Funktion
eval()
.
Risiken bei der Verwendung einer externen Quelle zur Pfadbestimmung
Eine AIR-Anwendung kann geschädigt werden, wenn externe Daten oder Inhalte verwendet werden. Gehen Sie aus diesem Grund mit größter Vorsicht vor, wenn Sie Daten aus dem Netzwerk oder Dateisystem verwenden. Die Verantwortung für die Vertrauenswürdigkeit liegt letztendlich auf Seiten der Entwickler und der Netzwerkverbindungen, die sie herstellen; das Laden fremder Daten stellt aber immer ein Risiko dar und sollte nicht für die Eingabe bei kritischen Operationen verwendet werden. Entwicklern wird von Folgendem abgeraten:
-
Bestimmen von Dateinamen mithilfe von Daten aus einer Netzwerkquelle
-
Konstruieren einer URL, mit der die Anwendung persönliche Angeben sendet, mithilfe von Daten aus einer Netzwerkquelle
Risiken beim Verwenden, Speichern oder Übertragen von unsicheren Benutzerangaben
Das Speichern von Benutzerangaben im lokalen Dateisystem des Benutzers beinhaltet das Risiko, dass diese Angaben missbräuchlich genutzt oder beschädigt werden. Entwicklern wird empfohlen, Folgendes in Betracht zu ziehen:
-
Wenn Benutzerangaben lokal gespeichert werden müssen, verschlüsseln Sie die Angaben beim Schreiben in das lokale Dateisystem. Die Laufzeitumgebung stellt über die EncryptedLocalStore-Klasse eine verschlüsselte Speicherung zur Verfügung, die für jede installierte Anwendung eindeutig ist. Weitere Informationen finden Sie unter
Verschlüsselter lokaler Speicher
.
-
Senden Sie unverschlüsselte Benutzeranmeldedaten nur dann an eine Netzwerkquelle, wenn Sie sicher sind, dass die Quelle vertrauenswürdig ist und wenn das sichere Protokoll HTTPS oder Transport Layer Security (TLS) verwendet wird.
-
Geben Sie bei der Erstellung von Benutzerangaben nie ein Standardkennwort an, sondern lassen Sie den Benutzer ein eigenes einrichten. Andernfalls könnten Angreifer, denen das Standardkennwort bekannt ist, alle Angaben des Benutzers erfahren, wenn dieser das Standardkennwort nicht ändert.
Risiken durch Downgrade-Angriffe
Bei der Anwendungsinstallation überprüft die Laufzeitumgebung, ob bereits eine Version der Anwendung installiert ist. Wenn eine Anwendung bereits installiert ist, vergleicht die Laufzeitumgebung den Versionsstring mit der Version, die installiert werden soll. Unterscheiden sich die Strings, hat der Benutzer die Möglichkeit, seine Installation zu aktualisieren. Die Laufzeitumgebung kann nicht garantieren, dass die neu installierte Version tatsächlich neuer als die alte Version ist, sondern lediglich, dass sie anders ist. Ein Angreifer könnte eine ältere Version an den Benutzer verteilen, um eine Sicherheitslücke auszunutzen. Aus diesem Grund wird Entwicklern geraten, beim Ausführen der Anwendung Versionsüberprüfungen vorzunehmen. Es empfiehlt sich, Anwendungen regelmäßig nach erforderlichen Updates im Netzwerk suchen zu lassen. Selbst wenn ein Angreifer erreicht, dass ein Benutzer eine ältere Version ausführt, kann diese ältere Version dann erkennen, dass sie aktualisiert werden muss. Ein übersichtliches Versionsschema für Ihre Anwendung erschwert es Angreifern, Benutzer zum Installieren einer älteren Version zu bringen.
|
|
|