tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
14
ZUGRIFFE
770
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    JavaEngel JavaEngel ist offline Mitglied Silber
    Registriert seit
    Jul 2008
    Beiträge
    57
    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
     

  2. #2
    Registriert seit
    Apr 2007
    Beiträge
    209
    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
     

  3. #3
    JavaEngel JavaEngel ist offline Mitglied Silber
    Registriert seit
    Jul 2008
    Beiträge
    57
    Zitat Zitat von Looky Beitrag anzeigen
    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!
     

  4. #4
    Registriert seit
    Apr 2007
    Beiträge
    209
    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)
     

  5. #5
    JavaEngel JavaEngel ist offline Mitglied Silber
    Registriert seit
    Jul 2008
    Beiträge
    57
    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)
     

  6. #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():
    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);
        }
    etc.

    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ß Tom
     
    Java 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

  7. #7
    JavaEngel JavaEngel ist offline Mitglied Silber
    Registriert seit
    Jul 2008
    Beiträge
    57
    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
     

  8. #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.

    Code java:
    1
    
    Also erstmal möchte ich euch sagen das Ihr euch für die schönste Sprache entschieden habt
    Das ist relativ

    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ß Tom
     
    Java 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

  9. #9
    Registriert seit
    Apr 2007
    Beiträge
    209
    Zitat Zitat von Thomas Darimont Beitrag anzeigen
    Das ist relativ
    Hängt den Ketzer!
     

  10. #10
    Avatar von Navy
    Navy Navy ist offline Freiwillige Serverwehr
    tutorials.de Administrator
    Registriert seit
    Jul 2003
    Ort
    Montreal (Quebec)
    Beiträge
    1.667
    Zitat Zitat von Looky Beitrag anzeigen
    Hängt den Ketzer!
    ... einen Orden um!

    Java ist relativ zu (Visual)Basic eine wunderschöne Sprache. Im Vergleich zu echten Programmiersprachen hingegen ist es eine Krücke.

    SCNR
     
    Navy

    --
    Echtzeithilfe unter irc.tutorials.de #tutorials.de

  11. #11
    Avatar von Oliver Gierke
    Oliver Gierke Oliver Gierke ist offline Mitglied Rubin
    Registriert seit
    Dec 2003
    Ort
    Mannheim
    Beiträge
    1.457
    [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

  12. #12
    Avatar von Navy
    Navy Navy ist offline Freiwillige Serverwehr
    tutorials.de Administrator
    Registriert seit
    Jul 2003
    Ort
    Montreal (Quebec)
    Beiträge
    1.667
    Zitat Zitat von Oliver Gierke Beitrag anzeigen
    [offtopic]Definiere "echt" oder willst du nur flamen?[/offtopic]
    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.
     
    Navy

    --
    Echtzeithilfe unter irc.tutorials.de #tutorials.de

  13. #13
    Avatar von takidoso
    takidoso takidoso ist offline Mitglied Brillant
    Registriert seit
    Aug 2004
    Ort
    Kömigstein
    Beiträge
    911
    Zitat Zitat von Navy Beitrag anzeigen
    Ich bin der Meinung, dass man nicht alle Aussagen durch Emoticons kennzeichnen muss -- zumal das "SCNR" doch recht eindeutig ist.
    Die Abkürzung kenne ich noch nicht, was ist SCNR?
     

  14. #14
    Avatar von Oliver Gierke
    Oliver Gierke Oliver Gierke ist offline Mitglied Rubin
    Registriert seit
    Dec 2003
    Ort
    Mannheim
    Beiträge
    1.457
    Zitat Zitat von Navy Beitrag anzeigen
    Echt im Sinne von "nativ laufend", "schön strukturiert", "umfassend mächtig" und "kein speicherfressendes Monster".
    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 .

    Zitat Zitat von takidoso Beitrag anzeigen
    Die Abkürzung kenne ich noch nicht, was ist SCNR?
    Sorry, Could Not Resist

    Me, too

    REINHAUN!
     
    In theory, there is no difference between theory and practice. In practice, there is!

    www.olivergierke.de

  15. #15
    Adrian_Broher Adrian_Broher ist offline Mitglied Gold
    Registriert seit
    Aug 2007
    Beiträge
    166
    Zitat Zitat von Navy Beitrag anzeigen
    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.
    <°((><

    Ich wuensche einen guten Appetit.
     

Ähnliche Themen

  1. Serversicherheit durch Sandbox / anderen Benutzer unter WinXP
    Von ZodiacXP im Forum Hosting & Webserver
    Antworten: 0
    Letzter Beitrag: 20.12.09, 22:37
  2. ERROR #2048 Verletzung der Sicherheits-Sandbox
    Von medokin im Forum Flash Plattform
    Antworten: 0
    Letzter Beitrag: 18.05.09, 23:09
  3. Antworten: 8
    Letzter Beitrag: 05.05.09, 07:21
  4. Antworten: 1
    Letzter Beitrag: 17.02.07, 18:39
  5. Java is Hot! Java News - Java Polis 2005
    Von Thomas Darimont im Forum Java
    Antworten: 0
    Letzter Beitrag: 03.12.05, 16:23