Java hat sich als Plattform für verteilte, objektorientierte Applikationen, bei denen das Thema Sicherheit wichtig ist, etabliert. Das Sicherheitsmodell von Java basiert auf Capabilities: Ein Objekt kann nur über eine Objektreferenz (=Capability) angesprochen werden. Zusätzlich können Klassen auch selbst Zugriffsschutz abhängig vom Aufrufer implementieren (Zugriffslisten-Implementierung). Bei Java ist die Sicherheitskonfiguration nicht von der Implementation der Applikationsklassen getrennt, sondern muß in die Applikationsklassen hineinimplementiert werden. Das Hauptproblem bei Capabilities ist die Verbreitungskontrolle: Da bei objektorientierten Systemen oft Objektreferenzen übergeben werden, ist es schwer, die Kontrolle zu behalten, wer auf welche Referenz zugreifen kann. Zugriffslisten haben andererseits den Nachteil, daß es einer böswilligen Applikation möglich sein kann, fremden, privilegierten Subjekten (Programmteilen, Domänen) Objektreferenzen unterzuschieben (Unix s-Bit Problem). Wir stellen ein Sicherheitsmodell vor, das diese Probleme löst. Durch spezielle Sicherheitsmetaobjekte trennen wir die Sicherheitsstrategie von der Implementierung der Applikationsklassen. Ein Sicherheitsmetaobjekt kann an eine Objektreferenz geheftet werden und schützt diese Referenz, indem es Zugriffe (Implementation von konfigurierbaren Capabilities) und Parameter- und Rückgabewerte überwacht, um die versehentliche Herausgabe von Referenzen zu verhindern bzw. herausgegebene Referenzen mit Zugriffsbeschränkungen zu versehen (Implementation von transitiven Capabilities).