Einführung / Konfiguration des FirstSpirit-Servers / Zusätzliche Sicherheitsmechanismen / Ausführen externer Prozesse absichern

Sicherheitskritische Aufrufe in Skripten und Templates unterbinden

Inhaltsverzeichnis

FirstSpirit bietet an vielen Stellen die Möglichkeit externe Klassen und Prozesse auszuführen, beispielsweise:

Diese dynamischen Inhalte sind prinzipbedingt immer auch eine Schwachstelle für Angriffe. Eine missbräuchliche Verwendung ermöglicht bei ungesichertem Zugriff auf diese Funktionen:

  • das Beenden des FirstSpirit-Servers und / oder
  • den Zugriff auf Projekt- und Serverdateien im Dateisystem (lesend und schreibend)

Rechte für Skript-Engines einschränken (Standardkonfiguration)

Um einen einwandfreien und sicheren Betrieb von FirstSpirit-Servern zu gewährleisten, werden alle Aufrufe über die Skript-Engines (für Beanshell, FirstSpirit Templatecode) in der Standardkonfiguration mit eingeschränkten Rechten ausgeführt und der Aufruf sicherheitskritischer Funktionen unterbunden (sowohl clientseitig als auch serverseitig).

In der Standardkonfiguration werden die folgende Aufrufe unterbunden:

  • System.exit (Beenden der Java VM)
  • System.setSecurityManger (Änderung des FirstSpirit Security Manager)

Standardkonfiguration ändern (optional)

Durch das Anlegen einer Konfigurationsdatei fs-script.policy im Unterverzeichnis conf des FirstSpirit-Servers ist es möglich, weitere Rechte für die Skript-Engines zu konfigurieren (in diesem Fall zu entziehen).

Die Policy-Datei unterstützt eine erweiterte Syntax (Globale Grand- und Deny-Sektion, Priority).

Erweiterte Syntax der Java Policy File syntax:

  • priority „deny“:  Zugriff ist erlaubt wenn er nicht verboten ist _und_ als erlaubt definiert ist. 
  • priority „grant“: Zugriff ist erlaubt wenn er als erlaubt definiert ist _oder_ nicht verboten ist. 

Siehe http://pro-grade.sourceforge.net/pro-grade.html#Decision_making_table 

Die Rechte entsprechen den Standard Java Permissions.

Nicht unterstützt werden:

  • Keystores,
  • CodeSource oder
  • Principals

Wichtig Bei Verwendung eines externen Application Servers muss in diesem ein Security Manager konfiguriert werden. Andernfalls wird die Policy-Datei nicht ausgewertet.

Weitere Dokumentation (extern):

Die Standardkonfiguration entspricht dieser Datei: 

priority "deny"; 
deny { 
     permission java.lang.RuntimePermission "exitVM.*"; 
     permission java.lang.RuntimePermission "setSecurityManager"; 

grant { 
     permission java.security.AllPermission; 
}; 

Beispiel für eine erweitertes Konfiguration mit eingeschränkten Dateirechten:  

priority "grant"; 
grant { 
  permission java.io.FilePermission "/tmp/*", "read,write"; 
  permission java.io.FilePermission "/home/user_x/-", "read"; 
}; 
deny { 
     permission java.lang.RuntimePermission "exitVM.*"; 
     permission java.lang.RuntimePermission "setSecurityManager"; 
     permission java.io.FilePermission "<<ALL FILES>>", "read,write"; 

In der Beispielkonfiguration ist der Zugriff auf folgende Dateien erlaubt:

  • alle Dateien direkt im Verzeichnis /tmp (lesend und schreibend),
  • alle Dateien im Verzeichnis /home/user_x und allen Unterverzeichnissen (nur lesend)

Für alle anderen Dateien werden die Rechte entzogen. Damit werden alle Zugriffe auf Dateien über Skripte oder aus dem FirstSpirit Templatecode heraus unterbunden.

© 2005 - 2022 Crownpeak Technology GmbH | Alle Rechte vorbehalten. | FirstSpirit 2022.12 | Datenschutz