Fact-checked by Grok 2 weeks ago

Capability-based security

Capability-based security is a model in which to resources, such as files, segments, or devices, is controlled through capabilities—unforgeable tokens that encapsulate a unique along with specific rights, such as read, write, or execute, ensuring that possession of a capability is both necessary and sufficient for authorized operations. This approach enforces the principle of least privilege by limiting to only those resources explicitly granted via capabilities, preventing unauthorized actions even within the same process or across processes. Originating from early explorations in multiprogrammed , it provides a mechanism for protection and sharing, contrasting with traditional access control lists (ACLs) by decentralizing authority and enabling fine-grained without central policy enforcement. The foundational concepts of capability-based security were introduced in 1966 by Jack B. Dennis and Earl C. Van Horn in their seminal paper on programming semantics for multiprogrammed computations, where they proposed capabilities as protected names for objects to facilitate secure resource sharing in time-sharing systems. Key elements include objects, which are abstract entities like data structures or procedures addressed solely by capabilities; capability lists (C-lists), segmented structures that store capabilities for a process's accessible resources, inaccessible to user-level modifications; and spheres of protection, domains that isolate processes to ensure mutual distrust and confinement. Capabilities support dynamic delegation, allowing subsets of rights to be copied or transferred for controlled sharing, while mechanisms like revocation and indirect capabilities address challenges such as reclaiming access or preventing unintended propagation. This model promotes context-independent addressing, enabling long-lived objects and uniform handling of primary and secondary storage without relying on privileged modes. Notable implementations demonstrate the model's evolution and practical impact. Early systems include the PDP-1 timesharing system (1960s), which supported capability-based resource access for multiple users, and the CAP computer (1970), the first successful university-built capability hardware featuring process hierarchies for structured . Commercial examples encompass the System 250 (1969), designed for high-reliability , the System/38 (1978), which incorporated revocation for , and the iAPX 432 (1981), an object-based using active and passive for type-safe extensions. More recent advancements, such as the architecture (2023), introduce linear for alias-free memory isolation, revocable delegation, and extensible privilege hierarchies, enabling trustless support for diverse isolation models like trusted execution environments with low overhead. Advantages of capability-based security include enhanced modularity through protected procedures and type managers, which allow user-defined subsystems for extensibility; improved security via encapsulation and abstraction, reducing the trusted computing base; and facilitation of reliable system construction by eliminating risks from linear address spaces. However, challenges like performance overhead from capability resolution and the "confused deputy" problem—where a principal misuses delegated capabilities—have driven ongoing research into hardware accelerations and hybrid models. Today, influences persist in modern systems like seL4 microkernel and CHERI processor extensions, underscoring its role in fine-grained, object-oriented protection.

Fundamentals

Definition and Core Principles

Capability-based security is a model in which access to resources is mediated through , which originated in the work of and Van Horn. A is defined as an unforgeable token or reference that combines an —such as a unique bit string naming a resource—with a set of access rights specifying permitted operations on that object. These are typically stored in protected , such as a capability list (C-list) that is shielded from user-level examination or modification and managed exclusively by the operating system. The core principles of capability-based security emphasize secure and minimal authority granting. The principle of least privilege requires that entities receive only the exact necessary for their tasks, enabling dynamic and context-specific access without excess permissions. No ambient ensures that programs do not inherit or operate with implicit, environment-wide rights; instead, all must be explicitly held as capabilities and passed during interactions, mitigating risks like the . Unforgeability guarantees that capabilities cannot be created, altered, or impersonated by unauthorized users, as they rely on kernel-enforced protection and derivation only from existing valid capabilities. Capabilities facilitate fine-grained by functioning as tamper-proof "keys" that directly reference and authorize operations on specific objects, such as files, devices, or processes, without relying on centralized name resolution. This token-based approach allows precise of subsets of rights, supporting modular and secure resource sharing in multiprogrammed environments. Key properties further strengthen this model. Opacity ensures that capabilities reveal no inherent information about the referenced object or its broader context, preventing inference-based attacks. Composability allows to be combined or derived to form complex authority structures, enabling scalable abstractions for collaborative systems. Confinement isolates principals by restricting capability propagation to authorized channels, thereby containing potential security breaches within defined boundaries.

Historical Development

The concept of capabilities as a protection mechanism in multiprogrammed systems was first introduced in the 1966 paper "Programming Semantics for Multiprogrammed Computations" by Jack B. Dennis and Earl C. Van Horn, published in the Communications of the ACM, which proposed capabilities as unforgeable tokens granting specific access rights to computational resources. In the 1970s, capability-based architectures advanced through experimental systems such as the , developed at the and operational by 1975, which implemented hardware-supported capabilities for secure and demonstrated a fully functional operating system with capability-based addressing. Concurrently, the Hydra kernel, part of the C.mmp multiprocessor project at starting in 1971, pioneered object-based capabilities in a environment, emphasizing protected access to abstract objects beyond mere memory segments. The , a commercial multiprocessor introduced around 1972 by in the UK, provided the first operational hardware implementation of capability-based addressing for fault-tolerant computing, influencing secure system design in defense applications. The saw integration of capabilities with advanced features like orthogonal persistence in the Flex machine, a capability-based architecture developed by the UK's Royal Signals and Radar Establishment from 1982 to 1986, which allowed uniform treatment of persistent objects across program lifetimes without explicit save or load operations. During the late and , persistent capabilities gained prominence in microkernels such as KeyKOS, a pure capability-based operating system for mainframes developed by Key Logic Inc. starting in 1983, which enforced security through sparse address spaces and factory mechanisms for object creation. Its successor, EROS, introduced in the late by Jonathan Shapiro and others, refined these ideas in a fast capability system with revocable and confined capabilities, emphasizing efficiency in user-mode resource management. The transition to mainstream influence occurred in the 2000s through object-capability models, notably advanced by Mark S. Miller's work on agoric computing, which applied capabilities to secure distributed systems via economic metaphors for resource allocation, as detailed in his 2006 paper "Robust Composition: Towards a Unified Approach to Access Control and Concurrency Control." This era also featured the E programming language, designed by Miller in 1997 but maturing in the 2000s, which enforced object-capability discipline for safe delegation in distributed environments, influencing secure scripting paradigms. Post-2000 theoretical refinements include the development of verified object-capability kernels, such as seL4, a high-assurance proven correct in 2009 by Gerwin Klein and colleagues at NICTA (now Data61), which uses capabilities for fine-grained and has been extended in academic work to support object-capability approaches.

Comparison to Other Security Models

Versus Access Control Lists (ACLs)

Access control lists (ACLs) are a mechanism where permissions are defined as lists of subject-object pairs attached directly to the protected object, such as a file or resource, specifying which subjects (e.g., users or processes) are granted particular rights like read or write access; these lists are consulted by the system during each access attempt to verify . In contrast, capability-based security employs unforgeable tokens, or capabilities, held by the subject, which encapsulate both a reference to the object and the associated rights, allowing access without repeated lookups on the object itself. A fundamental structural difference lies in their orientation: ACLs are object-centric, storing with the and relying on names or identifiers for resolution, whereas capabilities are subject-centric, with the accessor possessing direct, opaque references that bypass name-based lookups and mitigate risks like name-resolution attacks where an adversary exploits ambiguous identifiers. This design in capabilities ensures that cannot be assumed ambiently through environmental , reducing the " where a privileged is tricked into acting on behalf of an unauthorized entity using shared naming spaces. Additionally, capabilities support finer-grained control by enabling dynamic creation of s and s with isolated scopes, unlike ACLs, which often limit granularity to predefined s and impose ambient across domains. Capabilities offer advantages over ACLs in delegation and scalability: transferring rights is as simple as passing the capability token, avoiding the need to modify the object's list, which facilitates secure sharing without centralized updates. This promotes better adherence to least-privilege principles, as subjects only hold explicit authorities, enhancing security in distributed or multi-tenant environments compared to ACLs' reliance on exhaustive enumeration that can lead to over-privileging. For instance, in an ACL system, granting temporary access to a collaborator requires appending their identity to the object's list, potentially exposing it to revocation challenges; with capabilities, a derived token with limited rights can be minted and shared directly, revocable by invalidating the token without altering the original resource. However, capabilities introduce drawbacks relative to ACLs, particularly in management: the decentralized nature of held can lead to if not carefully controlled, complicating across distributed holders, whereas ACLs provide centralized oversight at the object for auditing and bulk changes. ACLs may thus be preferable in scenarios requiring straightforward administration of user rosters, as seen in traditional systems where object-attached lists simplify tracking.

Versus Traditional UNIX Permissions

Traditional UNIX permissions employ a discretionary access control model that categorizes users into three classes—owner, group, and others—with each class assigned a set of read (r), write (w), and execute (x) bits to determine access rights. Access decisions are made by comparing the process's effective user ID and group ID against the file's owner ID and group affiliation, allowing processes to inherit the full ambient authority of their user without explicit per-operation checks. This model, designed for multi-user time-sharing systems, relies on static file attributes rather than dynamic tokens, resulting in coarse-grained control where all processes of a user share identical rights across resources. In contrast, capability-based security replaces ambient authority with explicit, unforgeable capabilities that must be passed to operations, preventing processes from accessing resources beyond those for which they hold and enforcing least on a per-invocation basis. UNIX's ambient model often leads to over-privileging, as a single compromised process can leverage the user's full rights, whereas capabilities confine damage by limiting authority to specific, delegable subsets of rights on individual objects. For instance, UNIX requires binaries to elevate privileges globally for tasks like password changes, exposing entire systems to risks if exploited, while capabilities enable fine-grained, temporary rights without user ID switching. Capabilities provide superior flexibility for dynamic environments, supporting per-object rights revocation and without altering global user privileges, thus addressing UNIX's limitations in for modern applications like sandboxed sandboxes. This approach aligns with the principle of least authority introduced in early designs, allowing secure sharing in multiprogrammed systems without the broad exposure inherent in UNIX's trichotomy. Despite these advantages, UNIX permissions' simplicity facilitates widespread legacy compatibility and ease of administration in resource-constrained settings, whereas migrating to full capability systems introduces complexity in and application redesign. Hybrid models, such as capabilities, bridge this gap by decomposing superuser privileges into 38 discrete units that can be assigned to processes independently of traditional file permissions, reducing reliance on while maintaining UNIX compatibility.

Key Mechanisms

Capability Creation and Management

In capability-based security, capabilities are initially created by a privileged entity, such as the operating system , upon the allocation of a new system object, granting the creating process full access rights to that object. This issuance ensures that only authorized entities can obtain initial control over resources, establishing a foundation for controlled access from the outset. Capabilities can also be derived from existing ones through a process known as , where a new capability is generated with a restricted of the from the , allowing processes to safely grant limited access without exposing full privileges. This mechanism supports the principle of least authority by enabling fine-grained right subsetting while preserving the unforgeable nature of the original token. Management of capabilities involves secure storage in kernel-protected structures, such as capability tables or slots, to prevent unauthorized modification or inspection by user processes. In user space, capabilities may be represented as opaque handles, like file descriptors, which serve as references without revealing underlying details. To handle object lifecycle efficiently, many systems employ , where each capability maintains a count of active references to the associated object; when the count reaches zero, the object is automatically deallocated through garbage collection, avoiding resource leaks without manual intervention. In modern microkernels, such as seL4, are managed via a hierarchical registry of nodes, where each contains fixed slots for , and to these nodes is itself governed by , enabling verified and scalable as of its 2024 releases. During usage, a invokes a through a dedicated , prompting the to validate the capability's authenticity, rights, and validity without performing name resolution or path traversal, thereby streamlining while enforcing security boundaries. To prevent , capabilities rely on or cryptographic protections; historical systems used tagged architectures to mark and verify capability words, ensuring they cannot be fabricated or altered by software. Contemporary implementations, like the CHERI architecture, extend this with parallel tagged that protects capability integrity at the level, detecting tampering attempts during load and store operations.

Sharing, Delegation, and Revocation

In capability-based security, occurs when a principal transfers a to another entity, granting the recipient the associated access rights without altering the original holder's permissions. This is typically achieved through mechanisms, such as sending a over a , where the receiver obtains an unforgeable reference that allows only the specified operations on the resource. The process ensures that the shared is confined to the intended scope, preventing unintended proliferation unless explicitly allowed. Delegation extends sharing by enabling principals to create and pass attenuated copies of capabilities, restricting subsets of rights to downstream recipients and supporting hierarchical access without relying on a central authority. For instance, a read-write capability can be delegated as a read-only version by omitting write permissions during copying, allowing fine-grained control over further sub-delegation. This attenuation promotes secure propagation, as each delegatee receives only the necessary authority, facilitating composable systems like those in Eros, where delegation functions subset permissions recursively. Revocation reclaims access by invalidating , addressing the challenge of distributed environments where delegated may persist indefinitely. Mechanisms include immediate kernel-level invalidation, which sets the capability to , and lazy approaches using with expiry epochs to propagate changes efficiently. In systems like , revocation is achieved through dedicated revocation that allow upstream principals to reclaim linear, exclusive access trustlessly, overriding downstream via seniority hierarchies. The "revocation problem" arises in distributed settings due to tracking delegation trees, often solved by or versioning to avoid broadcast overheads. Key properties enhance these operations: indirection allows capabilities to reference other capabilities, enabling composable revocation patterns like revocable forwarders that interpose on access without direct invalidation. Explicit passing of capabilities avoids the , where ambient authority might be exploited, ensuring authority is only exercised when intentionally delegated. Recent advances in revocable capabilities for cloud environments focus on in distributed systems. For example, guarded capability sets with versioning enable immediate, selective across data centers with and constant overhead, sharding to handle node failures without central bottlenecks.

Illustrative Examples

Basic File Access Scenario

In a capability-based security model, consider a hypothetical scenario where A seeks to access a file for reading and writing. A begins by possessing a to a object, which it uses to invoke an open operation specifying the file's name. The system validates A's authority via the and creates a new token representing the file, embedding rights such as read (R) and write (W). This file , often implemented as an unforgeable reference like an index into a protected , is returned to A. With the file capability in hand, Process A performs read and write operations by presenting the capability token to the alongside the desired action. For a read operation, the checks the embedded R right and, if valid, retrieves the requested data from the file object, transferring it to Process A's without further name resolution. Similarly, a write operation requires validation of the W right before modifying the file contents. These steps ensure that access is direct and governed solely by the capability's explicit rights, upholding the principle of unforgeability where tokens cannot be fabricated or altered by user processes. To share access, Process A can delegate a derived capability to Process B, attenuating the rights—for instance, granting only R to prevent modifications. This involves copying the file capability with restricted permissions into Process B's capability list via a controlled grant mechanism, allowing Process B to read the file independently while limiting its scope. Such delegation promotes fine-grained sharing without exposing full authority. This approach illustrates key benefits of capability-based security: it eliminates vulnerabilities associated with path resolution, as relies on opaque rather than resolvable names that could be manipulated or spoofed. Additionally, the explicit rights in each capability prevent overreach, ensuring processes operate only within their intended privileges and reducing the risk of unintended escalations. A common pitfall arises from accidental leakage, where capabilities are copied insecurely—such as leaving them in shared registers or passing them without —potentially allowing unauthorized processes to exercise the full rights if the token is intercepted or improperly propagated. Proper management, including selective copying and primitives, is essential to mitigate this.

Real-World System Examples

A common real-world for capabilities is that of physical keys granting to specific objects, such as a house key that allows entry through a particular door but cannot be forged or used for unauthorized actions, emphasizing the principles of transferability—by handing over the key—and —by changing the lock to invalidate it. This mirrors how capabilities in systems provide unforgeable for object , ensuring that is explicitly delegated and can be withdrawn without affecting unrelated permissions. In programming languages adopting the , the language from the early 2000s exemplifies secure in through constructs like promises and vaults. Promises in E enable asynchronous, non-blocking operations by returning a reference to a future result immediately upon an eventual send, such as moving a remote object, which resolves later via when-catch handlers to handle fulfillment or breakage while maintaining ordered message delivery across machines. This supports pipelining of operations on unresolved promises, allowing efficient distributed workflows without exposing unintended . Vaults, akin to facets in E, restrict access to an object's methods by creating filtered views that enforce of least authority, for instance, by exposing only approved operations on a chat controller to prevent leaks during . Together, these features facilitate secure, revocable sharing of capabilities in distributed environments, where code runs in sandboxes and is granted explicitly via powerboxes for dynamic negotiation. Microkernels like seL4 demonstrate capability spaces as a foundational structure for (IPC), where capabilities are organized in capability nodes (CNodes) that form directed graphs, enabling threads to transfer capabilities synchronously via IPC endpoints without kernel-mediated . This setup confines authority to specific address spaces, page tables, and notifications, allowing secure delegation of IPC rights while isolating components in a formally verified environment. As of 2025, capability-based APIs have emerged in sandboxing through extensions like the WebAssembly System Interface (WASI), which grants modules explicit capabilities for resources such as file access or sockets only upon , preventing unauthorized escapes from the linear memory . 3.0 further integrates layered defenses with capability-based access, combining language-level ing and to support secure, portable code execution across browsers and cloud-native applications. This model reinforces conceptual parallels to the basic file access scenario, where capabilities delineate precise permissions for object interactions in untrusted environments.

Implementations

POSIX Capabilities

POSIX capabilities represent a Linux-specific extension to the traditional UNIX permission model, introduced in kernel version 2.2 in , which decomposes the () privileges into discrete, bounded units to enable finer-grained privilege management. These capabilities are bitmasks consisting of over 38 individual flags, such as CAP_SYS_ADMIN for performing administrative tasks like mounting filesystems or CAP_NET_ADMIN for network configuration, allowing processes to execute privileged operations without full access. Unlike pure systems, POSIX capabilities are applied on a per-thread basis within a process, inheriting from the during operations, and are designed to mitigate the risks associated with binaries by enabling least-privilege execution. The mechanics of capabilities revolve around three primary sets: the effective set, which determines the privileges currently active for the thread; the permitted set, which bounds the maximum privileges available; and the inheritable set, which specifies capabilities that can be passed to child processes. These sets are manipulated using system calls like capset() and capget(), often through the libcap library, which provides user-space tools for setting capabilities on executables via file extended attributes (e.g., capsh for shell-based management). By dropping unnecessary capabilities from the permitted set, processes can self-restrict, replacing monolithic mechanisms and reducing the in scenarios like network daemons or system utilities. Despite these advancements, capabilities fall short of a true capability-based security model, as they remain inherently tied to user IDs () for decisions, meaning capabilities are only effective when the process's effective UID is 0 () or when using the ambient set introduced in 4.3 (2015). This hybrid nature results in coarse-grained control, where capabilities cannot be fully revoked from running processes without termination and lack the object-specific found in pure systems, leading to potential privilege escalations if bounding set configurations are misapplied. For instance, the bounding set, which limits inheritable capabilities across the process tree, can be altered only by , complicating dynamic revocation. In practice, POSIX capabilities integrate with other Linux security features, such as (secure computing mode), to enforce sandboxing by combining capability drops with syscall filtering, as seen in container runtimes like where capabilities are explicitly granted to limit host access. Tools like libcap-ng extend manipulation capabilities for auditing and policy enforcement, supporting scenarios in systems or cloud environments. Recent enhancements in 6.x series (2023–2025), including improved capability bounding for namespaces via PR_SET_NO_NEW_PRIVS and refined ambient capability handling, address some inheritance issues in unprivileged namespaces, enhancing without full delegation. These updates, such as those in kernel 6.5 for stricter capability propagation in pid namespaces, underscore ongoing efforts to approximate least privilege in environments despite the model's UID dependencies.

Active and Modern Systems

, integrated into since version 9.0 in 2012, provides a lightweight capability-based sandboxing framework that extends UNIX without replacing them. It enables processes to enter a "capability mode" via the cap_enter(2) , restricting access to system resources through unforgeable capability tokens associated with descriptors and other objects, thereby eliminating ambient and facilitating fine-grained reduction. As of 2025, remains actively maintained, with ongoing enhancements such as sandboxing for utilities like bhyve(8) and frameworks, and it has undergone security audits to ensure robustness in production environments. Google's Fuchsia operating system, built on the Zircon microkernel, natively employs a capability-based security model where access to kernel objects—such as threads, virtual memory, and handles—is mediated exclusively through explicit capability grants, enforcing least privilege and process isolation by default. Channels in Zircon serve as secure conduits for passing capabilities between components, supporting modular, distributed system designs suitable for embedded and general-purpose devices. By 2025, Fuchsia has advanced toward production rollout, with integrations like Microfuchsia—a stripped-down variant—targeting embedded security in Android devices, alongside security analyses confirming its network stack's resilience against common exploits. The OS framework represents a scalable, component-based approach to capability-based security, leveraging s like seL4 to enforce through revocable capabilities that delineate between isolated subsystems, including sandboxed drivers and virtual machines. It emphasizes the principle of least authority by composing systems from verifiable components, mitigating risks from monolithic designs. In 2025, Genode's latest release (version 25.08) enhances seL4 integration with version 13.0 of the , introducing dynamic scheduling and updated drivers for improved performance in secure embedded and desktop scenarios. Qubes OS incorporates partial capability-inspired mechanisms through its Xen-based , where domains (qubes) are assigned explicit resource access rights, mimicking capability delegation to achieve security-by-compartmentalization and isolate potentially compromised applications. This design limits breach propagation by treating each qube as a capability-bounded entity with controlled inter-domain communication. In web technologies, the WebAssembly Component Model, standardized as part of WebAssembly 3.0 in 2025, introduces capability-based interfaces for composing secure, interoperable modules in browsers, allowing fine-grained permission grants for system interactions via the WebAssembly System Interface (WASI). This enables sandboxed execution with explicit capabilities for file access and networking, reducing attack surfaces in client-side applications.

Discontinued Systems

The System 250, developed in the late and introduced in by the Corporation in the , was the first commercially available computer to implement capability-based addressing in hardware. It featured a tagged where capabilities included base addresses, limits, and access , enforced through a System Capability Table (SCT) for memory segment mapping and a tag bit per word to distinguish capabilities from data, ensuring and preventing unauthorized access. Designed primarily for real-time applications like telephone switching, the system supported with up to eight processors and emphasized reliability, targeting a 50-year . Although it found niche use in UK , the System 250 saw limited commercial success and was effectively discontinued as a general product line due to its specialized focus and failure to achieve broader market adoption. The Flex machine, prototyped in the late 1970s and early 1980s at the UK's Royal Signals and Radar Establishment (RSRE) in Malvern, represented an innovative effort in capability-based computing with hardware support for orthogonal persistence. Its tagged architecture used a tag bit per byte to enforce type checking and bounds on references, treating procedures as first-class values via closures for secure, unforgeable . Orthogonal persistence was achieved through a no-overwriting policy on disc storage, creating a tree-structured object graph with distinct pointer marking and a disc garbage collector that enabled seamless data longevity across process lifetimes without explicit save or load operations. Optimized for high-level languages like an extended , the system aimed for efficient multi-access, multi-processing environments with fast garbage collection and a COMFLEX network for high-speed data transfer. However, as a prototype completed around 1980, the Flex machine was abandoned after its experimental phase, with no transition to commercial production. KeyKOS, initiated in 1977 and finalized in 1988, was a persistent, pure operating system developed for mainframes, emphasizing secure object-oriented . It used capabilities as the sole mechanism for , with all resources represented as persistent objects in a single-level store, supported by frequent system-wide checkpoints for and recovery. The architecture featured a nanokernel handling invocations, domains for isolation, and factories for object creation, enabling emulation of environments like VM and while providing fine-grained . EROS, a successor starting in 1991 and active until 2005, built on KeyKOS principles as a for commodity , introducing transparent single-level and efficient revocation through sparse transfer of capabilities. It supported long-lived processes with automatic resource accounting and was designed for high performance, with operations like capability creation costing under 1 on typical . Development of EROS's core halted in 2005, shifting to successors like CapROS, while a related project, Coyotos, which aimed to refine EROS with formally verifiable semantics in the BitC language, was also discontinued without full realization.) These discontinued systems faced common challenges that contributed to their limited longevity, including high implementation complexity from mechanisms like collection, , and management, which often imposed significant overheads without dedicated support. For instance, domain switches and indirect addressing in designs like those of and Flex added latency, while the shift toward (ACL)-dominant paradigms in mainstream operating systems, such as UNIX derivatives, favored simpler, hierarchical models over capability-based flexibility. Lack of widespread enforcement further exacerbated issues, making these systems less competitive for general-purpose . Despite their discontinuation, these systems left a lasting legacy in influencing modern capability-based designs, particularly the seL4 microkernel, which adopts principles of fine-grained , persistence, and inspired by KeyKOS and EROS to achieve high-assurance security.

References

  1. [1]
    [PDF] Programming Semantics for Multiprogrammed Computations
    North Holland, Amsterdam, 1959. Programming Semantics for Multiprogrammed. Computations. Jack B. Dennis and Earl C. Van Horn. Massachusetts Institute of ...
  2. [2]
    [PDF] Capability-Based Computer Systems - Bitsavers.org
    The purpose of this book is to provide a single source of infor- mation about capability-based computer systems. Although capability systems have existed ...Missing: seminal | Show results with:seminal
  3. [3]
    [PDF] A HARDWARE iMPLEMENTATION OF CAPABILITY-BASED ...
    The concept of viewing a computing system as a set of objects, and address- ing the objects by a protected name known as a capability, has existed for 14 years ...
  4. [4]
    [PDF] A Capability-based Foundation for Trustless Secure Memory Access
    Capability-based memory isolation is a promising new ar- chitectural primitive. Software can access low-level memory only via capability handles rather than ...
  5. [5]
    Gabriel Parmer - What are Capability-Based Systems?
    Oct 31, 2016 · The concept of a capability-based system is simple. Each user-level component accesses resources through a level of indirection. Resource ...Missing: definition | Show results with:definition
  6. [6]
    [PDF] Early Capability Architectures
    Dennis and Van Horn defined a hypotheti- cal operating system supervisor for a multiprogramming sys- tem. Multiprogramming systems were already in use at that.Missing: security | Show results with:security
  7. [7]
    [PDF] Paradigm Regained: Abstraction Mechanisms for Access Control
    In this paper, we offer a new look at the original capability model proposed by. Dennis and van Horn [Dennis66]—here called object-capabilities. Our emphasis—.
  8. [8]
    [PDF] Capability Myths Demolished - Papers
    POSIX capabilities are not generally described as “capability-based security”. The. “Netscape capabilities” extensions to Java were fairly short-lived and ...Missing: seminal | Show results with:seminal<|control11|><|separator|>
  9. [9]
    The Cambridge CAP computer and its protection system
    This paper gives an outline of the architecture of the CAP computer as it concerns capability-based protection and then gives an account of how protected ...
  10. [10]
    HYDRA: the kernel of a multiprocessor operating system
    This paper describes the design philosophy of HYDRA—the kernel of an operating system for C.mmp, the Carnegie-Mellon Multi-Mini-Processor.
  11. [11]
    [PDF] The Plessey System 250
    Although capabilities were used primarily for memory ad- dressing and protection in the Plessey 250, the designers viewed the capability mechanism as a means of ...Missing: 1970s | Show results with:1970s
  12. [12]
    [PDF] An Introduction to the FLEX Computer System, - DTIC
    The most salient features of the FLEX computer are described in section 1. An overview of the computer hardware is given in section 2 and more detailed ...
  13. [13]
    KeyKOS Home Page - Norman Hardy
    KeyKOS is a persistent, pure capability operating system. In talking about it with many people over the past few years, I've received many requests for papers ...
  14. [14]
    Welcome to ERights.Org
    Objects written in the E language are only able to interact with other objects according to ELib's semantics, enabling object granularity intra-process security ...
  15. [15]
    Acess Control Lists and Capability Lists - University of Iowa
    Note, with access control lists, that we only list users who have access to some file, omitting from the list those users who have no access. It should be ...
  16. [16]
    [PDF] The UNIX Time- Sharing System
    Ritchie and Ken Thompson. Bell Laboratories. UNIX is a general-purpose, multi-user, interactive operating system for the Digital Equipment Corpora- tion PDP ...
  17. [17]
    The UNIX time-sharing system | Communications of the ACM
    The UNIX time-sharing system. Special 25th Anniversary Issue. UNIX is a ... Request permissions from Permissions@acm.org. Publisher. Association for ...
  18. [18]
    [PDF] Capsicum: practical capabilities for UNIX - USENIX
    In addition to being more secure and easier to use than other sandboxing techniques, Capsicum performs well: unlike pure capability systems where system calls ...
  19. [19]
    Programming semantics for multiprogrammed computations
    Programming semantics for multiprogrammed computations. Special 25th Anniversary Issue.
  20. [20]
    capabilities(7) - Linux manual page - man7.org
    For the purpose of performing permission checks, traditional UNIX implementations distinguish two categories of processes: privileged processes (whose effective ...
  21. [21]
    [PDF] Issues in Capability-Based Architectures
    This book began by examining the objectives of early sys- tems in diverging from the conventional linear address space. Because each of the systems examined ...
  22. [22]
    Capabilities - seL4 docs
    A capability is a unique, unforgeable token that gives the possessor permission to access an entity or object in system. One way to think of a capability is as ...Missing: management | Show results with:management
  23. [23]
    [PDF] seL4 Reference Manual Version 13.0.0
    Jul 1, 2024 · An IRQHandler capability permits the management of a ... trol capability, which provides access to CPU time management on a single node.
  24. [24]
    The CHERI capability model: revisiting RISC in an age of risk
    We present CHERI, a hybrid capability model that extends the 64-bit MIPS ISA with byte-granularity memory protection.
  25. [25]
    Capability Myths Demolished - ERights.Org
    Capability systems have been largely dismissed by computer security reseachers and practitioners due to a history of misunderstandings repeated till they ...
  26. [26]
    Systems Research @ GWU - What are Capability-Based Systems?
    Oct 31, 2016 · A delegating component maintains access to ci, and the main operation it can perform is R – to revoke cj. Eros is the main system that used this ...
  27. [27]
    [PDF] A Capability-based Foundation for Trustless Secure Memory Access
    Aug 9, 2023 · Capability-based memory isolation is a promising new ar- chitectural primitive. Software can access low-level memory.
  28. [28]
    [PDF] Enabling Cloud-Scale Distributed Capabilities
    Mar 30, 2025 · This paper presents a distributed capability system to address security risks in cloud stacks, addressing limitations of existing systems at  ...Missing: 2024 | Show results with:2024
  29. [29]
    Physical Analogy
    For capability-based protection mechanisms a useful physical analogy is that each object is contained within a house having several doors that open into ...
  30. [30]
    3.2: Access Control - ACL - Engineering LibreTexts
    Jan 28, 2021 · In a capability-based model, holding an unforge-able reference or capability to an object, that provides access to the object (roughly analogous ...
  31. [31]
    The E Language in a Walnut - SkyHunter.com
    E has dramatic advantages for secure distributed systems. All communication in E is strongly encrypted, transparently to the programmer. Capability-based ...
  32. [32]
    IPC - seL4 docs
    Interprocess communication (IPC) is the microkernel mechanism for synchronous transmission of small amounts of data and capabilities between processes.
  33. [33]
    WASM as a Secure Sandbox: From the Browser to Distributed ...
    Oct 2, 2025 · Capability model: WASM modules cannot access files, sockets, or syscalls unless explicitly granted. WASI: The WebAssembly System Interface - in ...Compiling C/c++ Code With... · Running Wasm Outside The... · Why Wasm Is Safer
  34. [34]
    What's New in WebAssembly 3.0 and Why It Matters for Developers
    Oct 9, 2025 · WebAssembly 3.0's layered defenses, built on language sandboxing, hardware verification, and capability-based access, provide the foundation for ...Webassembly 3.0: From... · Ai Integration And The Mcp... · Wasm Radar<|control11|><|separator|>
  35. [35]
    Using WebAssembly to run, extend, and secure your app
    WASM's security model includes sandboxing, linear memory, and capability-based access. This session covers WASM security foundation, integrating WASM modules ...
  36. [36]
    Capsicum - FreeBSD Wiki
    Jun 5, 2025 · Capsicum technologies. Capsicum consists of various technologies: Capability mode, see capsicum(4) and cap_enter(2) for more info.
  37. [37]
    Secure | Fuchsia
    Feb 28, 2025 · Fuchsia builds on a kernel designed to securely isolate software. Zircon is a capability-based, object-oriented kernel.Missing: 2024 | Show results with:2024
  38. [38]
    [PDF] A Holistic Security Analysis of Google Fuchsia's (and gVisor's)
    Feb 24, 2025 · In this paper, we review the security of the network protocol stack used by Google Fuchsia operating system [1], based on the network stack of ...
  39. [39]
    Google is Bringing Fuchsia OS to Android Devices - Techloy
    Jul 9, 2024 · It seems that it will now appear on Android devices as developers at Google are working on a stripped-down version of Fuchsia OS called Microfuchsia.
  40. [40]
    Genode - Genode Operating System Framework
    The Genode OS framework is an open-source tool kit for building highly secure component-based operating systems. It scales from embedded devices to dynamic ...About · Sculpt OS version 25.10 · General overview · Genode community resources
  41. [41]
    Introduction - Qubes OS Documentation
    Qubes OS is a free and open-source, security-oriented operating system for single-user desktop computing. Qubes OS leverages Xen-based ...Screenshots · Getting started · Video tours
  42. [42]
    Wasm 3.0 Completed - WebAssembly
    Today, we are happy to announce the release of Wasm 3.0 as the new “live” standard. Title page of the WebAssembly Specification, Release 3.0, ...
  43. [43]
    The WebAssembly Component Model: Introduction
    The WebAssembly Component Model is a broad-reaching architecture for building interoperable WebAssembly libraries, applications, and environments.
  44. [44]
    [PDF] KeyKOS OSR Paper - PDOS-MIT
    May 29, 1992 · Introduction. This publication provides a description of KeyKOS, a mi- crokernel-based system, at a level sufficient to understand.
  45. [45]
    [PDF] EROS: a fast capability system* - UCSB Computer Science
    EROS is a capability-based microkernel with a single-level storage model. The single-level store's persistence is trans- parent to applications. Storage ...Missing: discontinued | Show results with:discontinued
  46. [46]
    History | seL4
    The seL4 story began in the early 2000s. In 2009, the first formally verified OS kernel was a scientific breakthrough. Since then, seL4 has continued to ...Missing: influence | Show results with:influence
  47. [47]
    [PDF] SeL4 Whitepaper [pdf]
    seL4 is still the world's only OS that is both capability-based and formally verified, and as such has a defensible claim of being the world's most secure OS.