Hi,
ich hab jetzt doch selbst ein Test-Szenario aufgebaut und
durchgeführt. Ergebnis: Web Start warnt (zumindest bei
nicht-signierten Zertifikaten) korrekt, wenn die JNLP-Datei geändert
wird.
Das habe ich gemacht: Zunächst ein kleines Testprogramm (hier mal nur
die main()-Methode wiedergegeben):
---
public static void main(String[] args) {
StringWriter sw=new StringWriter();
PrintWriter pw=new PrintWriter(sw);
pw.println("WebStart permissions test\n\nIf you see an exception,
I could not read.\n"+
"If you see the first line of /etc/passwd, I could access the
local resources.\n\nResult:");
try {
BufferedReader br=new BufferedReader(new
FileReader("/etc/passwd"));
pw.write(br.readLine());
br.close();
}
catch (Exception e) {
e.printStackTrace(pw);
}
pw.close();
JFrame jf=new JFrame("Web Start security bug testing");
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextArea jta=new JTextArea(15,50);
((JPanel)jf.getContentPane()).add("Center",jta);
jta.setText(sw.toString());
jf.pack();
jf.show();
}
---
Diese nun über folgende Web-Start-Datei zugänglich gemacht:
---
<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0+" codebase="http://[...]" href="testsec.jnlp">
<information>
<title>Test Security</title>
<vendor>cantamen GmbH</vendor>
<homepage href="http://www.cantamen.de"/>
<description>Testsec</description>
<description kind="short">Testsec</description>
<offline-allowed/>
</information>
*****<security><all-permissions/></security>*****
<resources>
<j2se version="1.4"/>
<jar href="testsec.jar" main="true"/>
</resources>
<application-desc main-class="[...]">
</application-desc>
</jnlp>
---
Die "*****"-Zeile ist zunächst ausgeklammert, d.h. das Programm hat
keine Rechte außerhalb der Sandbox.
Resultat: Keine Nachfrage beim Start, aber Exception wird geworfen,
das Programm kommt nicht /etc/passwd ran.
Nun: Einfügen der <security>-Zeile in die JNLP-Datei. Erneut
aufrufen. ES KOMMT DIE WARNMELDUNG mit der Nachfrage. Nach Bestätigen
derselben kann das Programm dann auf /etc/passwd zugreifen. Wie es
auch sein sollte.
Fazit: Änderungen der JNLP-Datei werden korrekt ausgewertet, die
Warnmeldung erscheint, Richards Sorgen sollten ausgeräumt sein.
Und ich muss heute länger arbeiten, damit ich die hierfür verwendete
Zeit wieder aufhole.
Ciao, Dirk
ich hab jetzt doch selbst ein Test-Szenario aufgebaut und
durchgeführt. Ergebnis: Web Start warnt (zumindest bei
nicht-signierten Zertifikaten) korrekt, wenn die JNLP-Datei geändert
wird.
Das habe ich gemacht: Zunächst ein kleines Testprogramm (hier mal nur
die main()-Methode wiedergegeben):
---
public static void main(String[] args) {
StringWriter sw=new StringWriter();
PrintWriter pw=new PrintWriter(sw);
pw.println("WebStart permissions test\n\nIf you see an exception,
I could not read.\n"+
"If you see the first line of /etc/passwd, I could access the
local resources.\n\nResult:");
try {
BufferedReader br=new BufferedReader(new
FileReader("/etc/passwd"));
pw.write(br.readLine());
br.close();
}
catch (Exception e) {
e.printStackTrace(pw);
}
pw.close();
JFrame jf=new JFrame("Web Start security bug testing");
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextArea jta=new JTextArea(15,50);
((JPanel)jf.getContentPane()).add("Center",jta);
jta.setText(sw.toString());
jf.pack();
jf.show();
}
---
Diese nun über folgende Web-Start-Datei zugänglich gemacht:
---
<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0+" codebase="http://[...]" href="testsec.jnlp">
<information>
<title>Test Security</title>
<vendor>cantamen GmbH</vendor>
<homepage href="http://www.cantamen.de"/>
<description>Testsec</description>
<description kind="short">Testsec</description>
<offline-allowed/>
</information>
*****<security><all-permissions/></security>*****
<resources>
<j2se version="1.4"/>
<jar href="testsec.jar" main="true"/>
</resources>
<application-desc main-class="[...]">
</application-desc>
</jnlp>
---
Die "*****"-Zeile ist zunächst ausgeklammert, d.h. das Programm hat
keine Rechte außerhalb der Sandbox.
Resultat: Keine Nachfrage beim Start, aber Exception wird geworfen,
das Programm kommt nicht /etc/passwd ran.
Nun: Einfügen der <security>-Zeile in die JNLP-Datei. Erneut
aufrufen. ES KOMMT DIE WARNMELDUNG mit der Nachfrage. Nach Bestätigen
derselben kann das Programm dann auf /etc/passwd zugreifen. Wie es
auch sein sollte.
Fazit: Änderungen der JNLP-Datei werden korrekt ausgewertet, die
Warnmeldung erscheint, Richards Sorgen sollten ausgeräumt sein.
Und ich muss heute länger arbeiten, damit ich die hierfür verwendete
Zeit wieder aufhole.
Ciao, Dirk