In Betriebssystemen durchgesetzte Sicherheitspolitiken sind von zentraler Bedeutung um die Sicherheitsanforderungen von Anwendungen zu unterstützen. Für eine Vielzahl von Anwendungen ist attributbasierte Zugriffskontrolle (ABAC) wegen ihrer Flexibilität, Ausdrucksstärke und Skalierbarkeit zu einer beliebten Klasse von Politiken geworden. Standardbetriebssysteme nutzen allerdings vorrangig restriktivere Sicherheitspolitiken, die eng mit ihren Abstraktionen verknüpft sind. Dies limitiert nicht nur die Anwendbarkeit für dynamischere Einsatzzwecke, sondern es erschwert auch formale Analysen von Politiken, die Korrektheitsgarantien ermöglichen. Um diese Vorteile in Standardbetriebssystemen nutzen zu können, und um die Herausforderungen dieser Integration zu untersuchen, stellen wir eine erste Version des Rust DABAC LSMs vor, einem Linux Security Module (LSM), das flexible, formelbasierte ABAC Politiken mit zustandsverändernden Post-Conditions unterstützt. Wir nutzen dazu ein Referenzmonitor-Architekturschema als Basis und entscheiden uns aufgrund der Korrektheitsgarantien für eine Implementierung in Rust. Zusätzlich zur Implementierung und ihrer umfassenden Evaluierung steuern wir eine Analyse des Stands der Technik zu ABAC-Implementierungen in Linux sowie eine Anforderungsspezifikation und ein gründliches Design des Rust DABAC LSMs bei. Der Fokus des Entwurfs liegt auf der Anwendbarkeit der Referenzmonitor-Architektur im Linux-Kernel und auf Leistungsverbesserungen durch Caching. Unsere Ergebnisse zeigen den Grad der Praxistauglichkeit des Rust DABAC LSMs. Einzelne aufeinanderfolgende Anfragen werden effizient abgewickelt, jedoch führen die strengen Anforderungen der durchgesetzten dynamischen ABAC-Politiken nach wechselseitigem Ausschluss zu Leistungseinbußen bei Sperrkonflikten. Für die ausgewählte Architektur und solche Politiken zeigen wir auch, dass die Caching-Verfahren die Performanz der Variante ohne Caching nicht effektiv verbessern können. Eine qualitative Analyse bestätigt die Tatsache, dass die monolithische Architektur von Linux die ordnungsgemäße Erfüllung des Verifizierbarkeitskriteriums der Referenzmonitoreigenschaften verhindert. Darüber hinaus kommen wir zu dem Schluss, dass sich die Unterstützung von Rust im Kernel zwar noch im Anfangsstadium befindet, für die Implementierung aber größtenteils genügt und stetig besser wird.
Access control policies enforced in operating systems are pivotal to support security requirements of applications. For a wide range of applications, attribute-based access control (ABAC) has become a popular class of policies due to its flexibility, expressiveness and scalability. Mainstream operating systems (OSs), however, predominantly use more restrictive policies, which are tightly coupled to their abstractions. Not only does this limit the applicability to more dynamic use cases, it also impedes formal policy analysis to enable correctness guarantees. In order to provide these benefits to a mainstream OS and to explore the challenges this integration poses, we present a first version of the Rust DABAC LSM, a Linux Security Module (LSM) that supports flexible, formula-based ABAC policies with state-changing post-conditions. We base this on a reference monitor architecture pattern and choose to implement it in Rust for its correctness guarantees. In addition to the implementation and its comprehensive evaluation, we contribute an analysis of the state of the art in ABAC implementations in Linux, and an extensive requirements specification and design of the Rust DABAC LSM. The design focuses on applicability of the reference monitor architecture to the Linux kernel and on performance-enhancements through caching. Our evaluation results show the degree of practical viability of using the Rust DABAC LSM. Individual subsequent requests are handled efficiently, although strict locking requirements of the enforced dynamic ABAC policies imply a performance penalty under lock contention. For the chosen architecture and such policies, we also show that the caching solutions could not effectively improve over the performance of the no-caching variant. A qualitative analysis reaffirms the fact that Linux’s monolithic architecture impedes fulfilling the verifiability reference monitor criterion. We also conclude that Rust support in the kernel is still in its early stages, but mostly suffices for the implementation and keeps improving.