ERLEDIGT
NEIN
NEIN
ANTWORTEN
14
14
ZUGRIFFE
770
770
EMPFEHLEN
-
Hallo liebe Java-Entwikler,
Also erstmal möchte ich euch sagen das Ihr euch für die schönste Sprache entschieden habt
Meine Frage:
Kann ich mit Java erkennen ob mein Programm in einer Sandbox läuft?
Danke
-
Mhm, ich würd einfach irgendeinen Zugriff machen, den du nur darfst wenn du außerhalb der eigentlichen Sandbox bist. Bekommst du eine AccessControllException weißt du Bescheid.
Vielleicht gibts ja noch schönere Möglichkeiten, für sowas ist dann meist Thomas verantwortlich
Chriz
-
Die Idee währe richtig gut, wenn sie nicht einen gewaltigen Denkfehler beinhalten würde. Ich bedanke mich erstmal für deine Meinung, ich schätze es sehr und freue mich über jeden Beitrag aus der Community.
Die Funktionsweise einer Sandbox ist unglaublich simpel und kaum offen für Lücken.
Es gibt zwei globale Rechte die das OS dem Benutzer zur Verfügung stellt. Die Lese und die Schreib -Rechte.
Bei einer Sandbox gibt es weiterhin beide Rechte Arten, allerdings führt die eine nicht zum gewünschten Ziel wie vom OS vorgesehen!
Bitte den nachfolgenden Text lesen und die Abbildung genauer betrachten.
http://img3.imagebanana.com/img/iqr9...andbox.bmp.png
Obere Zeichnung:
Links sind die Applikationen abgebildet. Rechts der Datenträger.
Die zwei Pfeile dazwischen symbolisieren die Lese- & Schreib-Rechte. Wie man sieht führen beide auf dem direkten Wege und von A nach B und zurück.
untere Zeichnung:
Links sind die Applikationen abgebildet. Rechts der Datenträger. In der Mitte sieht man die Sandbox. Diese erkennt die Befehle vom OS und greift direkt auf die API des installieren Betriebssystems zu. Wenn nun der Befehl kommt das eine Datei gelesen werden soll wird dieser Befehl einfach weitergereicht. Im übergebenen Parameter ist ja schließlich der richtige Pfad mitgegeben. Sollte aber nun eine Methode aufgerufen werden, die gerne einige 0en und 1en auf die Platte schreiben möchte (es gibt keinen unterschied zwischen dem direkten schreiben einer Datei oder einem Eintrag in die Registriere), wird dies sofort von der Sandbox registriert. Nun wird der übergebene Pfad einfach durch einen anderen ersetzt. Dieser wird streng genommen gar nicht ersetzt sondern am Anfang um einen kleinen Eintrag erweitert.
Aus dem Pfad. C:Programme\Windows\System32\Trojaner.exe
wird C:Sandbox\[Computername]\Programme\Windows\System32\Trojaner.exe
Alles was sich unter C:Sandbox befindet wird ebenfalls umgelenkt. Somit kommt nichts aus dem Verzeichnis raus.
Dein Denkfehler ist klar ersichtlich (zumindest wenn man mit der Funktionsweise vertraut ist) Egal welche Datei ich lese, ich werde immer an die echte Datei rankommen. Ein Virus der sich in der Sandbox befindet kann uneingeschränkt eine Verbindung zu einem Server aufnehmen und meine Dateien versenden! Meine originalen Daten!
-
Mhm, irgendwie versteh ich dich nicht.
Ich habe Testweise mal ein Applet geschrieben, welches versucht, eine Datei zu erzeugen (new File("c:\\").createNewFile()).
Anschließend bekam ich o.a. Fehlermeldung. Als ich das Applet signiert hatte, bekam ich diese Meldung nicht mehr.
Das hier habe ich auch aus der Doku raus kopiert...
This exception is thrown by the AccessController to indicate that a requested access (to a critical system resource such as the file system or the network) is denied.
The reason to deny access can vary. For example, the requested permission might be of an incorrect type, contain an invalid value, or request access that is not allowed according to the security policy. Such information should be given whenever possible at the time the exception is thrown.
Code java:1 2 3 4 5 6
try{ FilePermission perm = new FilePermission("/temp/testFile", "read"); AccessController.checkPermission(perm); }catch(AccessControlException e){ System.out.println("Sandbox?"); }
Geändert von Looky (19.08.08 um 09:19 Uhr)
-
Das ist normal, Applets können keine Daten schreiben, zumindest nicht auf dem Client.
Das hat zwar auch was mit dem Sandkasten Prinzip zu tun allerdings muss Java noch weitere Sicherheitsregeln einhalten.Geändert von JavaEngel (19.08.08 um 09:24 Uhr)
-
19.08.08 09:39 #6
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo,
sowas wie eine Sandbox (eine eingeschränkte Umgebung) gibts IMHO nicht nur bei Applets. Du kannst auch eine normale
Standalone Applikation oder eine Server Anwendung in einer solchen geschützten Umgebung ablaufen lassen, in dem
ein entsprechender SecurityManager (System.setSecurityManager()) verwendet wird. In der Java SE Standard Lib sind
an den entsprechenden Stelen (Beispielsweise Festplatten, Netzwerkzugriff, ClassLoading) entsprechende Routinen hinterlegt
die vor einer solchen Aktion (manchmal auch indirekt via java.security.AccessController.doPrivileged(...))
immer den entsprechenden SecurityManager um Erlaubnis bitten.
Beispielsweise:
java.io.File.createNewFile():
etc.Code java:1 2 3 4 5
public boolean createNewFile() throws IOException { SecurityManager security = System.getSecurityManager(); if (security != null) security.checkWrite(path); return fs.createFileExclusively(path); }
Wenn System.getSecurityManager() nicht null zurück gibt kannst du davon ausgehen, dass du in einer potentiell
eingeschränkten Umgebung läufst.
Beim initialisieren der Java Laufzeitumgebung werden verschiedene .policy Files ausgewertet in denen die "Rechte" deklarativ beschrieben sind, auf diese Information greift der SecurityManager dann zurück.
In Applets wird beispielsweise der sun.applet.AppletSecurity verwendet.
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
oooooooooohhhhhhhhhhhhhhhhhhhhhhhhhh

Ich hab vergessen was zu erwähnen, deswegen konnte der User gerade meine sehr gute Beschreibung auch nicht verstehen. Ich meine eine echte Sandbox wie Sandboxie oder VMWare oder so. Aber in reinem Java wird das nicht gehen, ich sollte zu den C-lern gehen oder zu den Bat-lern
-
19.08.08 09:51 #8
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo,
na ja, da hab ich aber schon bessere "Erklärungen" gelesen.
Das ist relativCode java:1
Also erstmal möchte ich euch sagen das Ihr euch für die schönste Sprache entschieden habt

Im speziellen fall von VMWare gibts IMHO schon Möglichkeiten festzustellen, ob man in einer solchen Umgebung läuft oder nicht. Beispielsweise mit dem VMWare SDK:
http://www.vmware.com/support/developer/vc-sdk/
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
-
20.08.08 12:27 #10
- Registriert seit
- Jul 2003
- Ort
- Montreal (Quebec)
- Beiträge
- 1.667
-
20.08.08 13:44 #11
[offtopic]Definiere "echt" oder willst du nur flamen?[/offtopic]
In theory, there is no difference between theory and practice. In practice, there is!
www.olivergierke.de
-
20.08.08 15:57 #12
- Registriert seit
- Jul 2003
- Ort
- Montreal (Quebec)
- Beiträge
- 1.667
Echt im Sinne von "nativ laufend", "schön strukturiert", "umfassend mächtig" und "kein speicherfressendes Monster". Und Ja. Meine Antwort war *natürlich* weniger ernst gemeint, wobei ich da aber auch ein wenig meine (rein subjektive) Abneigung gegen Java hab durchblicken lassen.
Ich bin der Meinung, dass man nicht alle Aussagen durch Emoticons kennzeichnen muss -- zumal das "SCNR" doch recht eindeutig ist.
Also, nichts für ungut.
-
-
20.08.08 18:24 #14
Bis auf den ersten Punkt wird das im Vergleich zum Initialpost nur noch subjektiver und damit haltloser.
Ich glaub ich versteh, dass man mit einer gewissen Programmiersozialisation zu solchen Vereinfachungen neigt. Allerdings zeugt das IMHO nicht von Weitsicht. Genausogut könnte man C Dialekte dafür blamen, ständig in einer Pointerhölle zu entarten, völlig unwartbaren Code zu fördern und sich schnell in die Reihe der Sprachen der speicherfressenden Monster einzureihen. Davon würde ich jedoch Abstand nehmen, schon um den Eindruck der Objektivität zu wahren
.
Sorry, Could Not Resist
Me, too
REINHAUN!In theory, there is no difference between theory and practice. In practice, there is!
www.olivergierke.de
-
20.08.08 18:44 #15
- Registriert seit
- Aug 2007
- Beiträge
- 166
Ähnliche Themen
-
Serversicherheit durch Sandbox / anderen Benutzer unter WinXP
Von ZodiacXP im Forum Hosting & WebserverAntworten: 0Letzter Beitrag: 20.12.09, 22:37 -
ERROR #2048 Verletzung der Sicherheits-Sandbox
Von medokin im Forum Flash PlattformAntworten: 0Letzter Beitrag: 18.05.09, 23:09 -
Software testen, danach Rollback zu voherigem Systemzustand? (Sandbox? Wiederh.pkt.?)
Von cocoon im Forum Microsoft WindowsAntworten: 8Letzter Beitrag: 05.05.09, 07:21 -
java.sun.com Artikel zeigt die neuen Features für Java on the Desktop von Java 6
Von Thomas Darimont im Forum Java Technology NewsAntworten: 1Letzter Beitrag: 17.02.07, 18:39 -
Java is Hot! Java News - Java Polis 2005
Von Thomas Darimont im Forum JavaAntworten: 0Letzter Beitrag: 03.12.05, 16:23





Zitieren

Login





