# catalina.policy-richtlinien mit dem SecurityManager aushebeln...



## ruutaiokwu (3. Nov 2010)

hallo zusammen,

habe gerade festgestellt dass sich die einstellung in der datei "catalina.policy" über die klasse java.lang.SecurityManager aushebeln lassen. dabei habe ich eine klasse WeakSecurityManger (extends SecurityManager) erstellt, den Konstruktor überschrieben und darin ein super(); hinzugefügt.

die restlichen funktionen habe ich überschrieben, void's leer gelassen und bei booleans immer false als rückgabewert definiert.

nun habe ich in der servlet-init()-funktion folgende zeilen geschrieben:

WeakSecurityManager wsm = new WeakSecurityManager();
System.setSecurityManager(wsm);


...nun wurden alle sicherheitsbeschränkungen ausser kraft gesetzt. ganz komisch, finde ich, dass die zu kontrollierende (web)applikation das überhaupt kann...???

oder müsste ich in der catalina.policy den aufruf des security managers in der webapplikation explizit verbieten?


grüsse, jan


----------



## ruutaiokwu (3. Nov 2010)

nachtrag: WeakSecurityManager code:



```
import java.io.FileDescriptor;
import java.net.InetAddress;
import java.security.Permission;

public class WeakSecurityManager extends SecurityManager
{
  public WeakSecurityManager()
  {
    super();
  }

  @Override
  public boolean checkTopLevelWindow(Object arg0)
  {
    return false;
  }

  @Override
  public void checkAccept(String arg0, int arg1)
  {

  }

  @Override
  public void checkAccess(Thread arg0)
  {

  }

  @Override
  public void checkAccess(ThreadGroup arg0)
  {

  }

  @Override
  public void checkAwtEventQueueAccess()
  {

  }

  @Override
  public void checkConnect(String arg0, int arg1, Object arg2)
  {

  }

  @Override
  public void checkConnect(String arg0, int arg1)
  {

  }

  @Override
  public void checkCreateClassLoader()
  {

  }

  @Override
  public void checkDelete(String arg0)
  {

  }

  @Override
  public void checkExec(String arg0)
  {

  }

  @Override
  public void checkExit(int arg0)
  {

  }

  @Override
  public void checkLink(String arg0)
  {

  }

  @Override
  public void checkListen(int arg0)
  {

  }

  @Override
  public void checkMemberAccess(Class<?> arg0, int arg1)
  {

  }

  @Override
  public void checkMulticast(InetAddress arg0, byte arg1)
  {

  }

  @Override
  public void checkMulticast(InetAddress arg0)
  {

  }

  @Override
  public void checkPackageAccess(String arg0)
  {

  }

  @Override
  public void checkPackageDefinition(String arg0)
  {

  }

  @Override
  public void checkPermission(Permission arg0, Object arg1)
  {

  }

  @Override
  public void checkPermission(Permission arg0)
  {

  }

  @Override
  public void checkPrintJobAccess()
  {

  }

  @Override
  public void checkPropertiesAccess()
  {

  }

  @Override
  public void checkPropertyAccess(String arg0)
  {

  }

  @Override
  public void checkRead(FileDescriptor arg0)
  {

  }

  @Override
  public void checkRead(String arg0, Object arg1)
  {

  }

  @Override
  public void checkRead(String arg0)
  {

  }

  @Override
  public void checkSecurityAccess(String arg0)
  {

  }

  @Override
  public void checkSetFactory()
  {

  }

  @Override
  public void checkSystemClipboardAccess()
  {

  }

  @Override
  public void checkWrite(FileDescriptor arg0)
  {

  }

  @Override
  public void checkWrite(String arg0)
  {

  }
}
```


----------



## ruutaiokwu (15. Nov 2010)

...ist meine frage so trivial, oder kann sich niemand dieses verhalten erklären?


----------



## ruutaiokwu (2. Feb 2011)

schliesse das thema mal...


----------



## Tobias (2. Feb 2011)

Javadoc hat gesagt.:
			
		

> setSecurityManager
> 
> public static void setSecurityManager(SecurityManager s)
> 
> ...



Ich kenne mich jetzt mit catalina.policies nicht aus, aber grundsätzlich müsste nur eingestellt werden, dass die Webanwendung keinen neuen Securitymanager setzen darf.


----------



## ruutaiokwu (2. Feb 2011)

hallo Tobias,

"...dass die Webanwendung keinen neuen Securitymanager setzen darf"

GENAU! das habe ich mir auch überlegt, wenn es darauf ankommt, müsste man wohl den aufruf des securitymanagers über die catalina.policy verbieten. das scheint die einzig logische erklärung zu sein... 


danke & gruss, jan


----------

