Skip to Content
MathematicsMathematics
  • Feature Paper
  • Article
  • Open Access

16 October 2025

Exception-Driven Security: A Risk-Aware Permission Adjustment for High-Availability Embedded Systems

and
Center for Secure and Dependable Systems (CSDS), University of Idaho, Moscow, ID 83844, USA
*
Author to whom correspondence should be addressed.

Abstract

Real-time operating systems (RTOSs) are widely used in embedded systems to ensure deterministic task execution, predictable responses, and concurrent operations, which are crucial for time-sensitive applications. However, the growing complexity of embedded systems, increased network connectivity, and dynamic software updates significantly expand the attack surface, exposing RTOSs to a variety of security threats, including memory corruption, privilege escalation, and side-channel attacks. Traditional security mechanisms often impose additional overhead that can compromise real-time guarantees. In this work, we present a Risk-aware Permission Adjustment (RPA) framework, implemented on CHERIoT RTOS, which is a CHERI-based operating system. RPA aims to detect anomalous behavior in real time, quantify security risks, and dynamically adjust permissions to mitigate potential threats. RPA maintains system continuity, enforces fine-grained access control, and progressively contains the impact of violations without interrupting critical operations. The framework was evaluated through targeted fault injection experiments, including 20 real-world CVEs and 15 abstract vulnerability classes, demonstrating its ability to mitigate both known and generalized attacks. Performance measurements indicate minimal runtime overhead while significantly reducing system downtime compared to conventional CHERIoT and FreeRTOS implementations.

1. Introduction

The rapid proliferation of Cyber–Physical Systems (CPSs), Industrial Control Systems (ICSs), the Internet of Things (IoT), smart transportation, medical devices, and other interconnected technologies has made high-availability embedded systems (ESs) an integral part of modern life. These systems often consolidate multiple applications and components within a single, non-isolated address space running on lightweight real-time operating systems (RTOSs). RTOSs are employed to ensure deterministic performance, predictable responses, and concurrent task execution, which are essential for time-critical applications [1]. However, the consolidation of system components increases the attack surface, particularly as network connectivity and dynamic software updates become more common [2].
Security analyses reveal that vulnerability-based attacks, such as buffer overflows, are frequent in ES and can result in unauthorized access, data leakage, or system crashes [3]. RTOSs, designed to operate under strict memory and processing constraints, often lack default protections such as memory isolation and access control, making them susceptible to memory corruption, privilege escalation, and side-channel attacks [4]. For example, the Urgent/11 vulnerabilities publicized in 2019 exposed hundreds of millions of VxWorks-powered medical devices and industrial controllers to remote code execution and denial of service, threatening patient monitors and critical infrastructure [5]. Similarly, the NUCLEUS:13 TCP/IP flaws in Siemens Nucleus RTOS jeopardized anesthesia machines and patient monitors in 2021, with critical risks of system compromise and harm to patient care [6]. Integrating traditional security measures, while necessary, can introduce additional complexity that may impact timing accuracy and real-time guarantees.
A recent analysis of the National Vulnerability Database (NVD) highlights a significant and growing number of vulnerabilities reported in embedded and real-time operating systems. As of late 2024, there were over 18,000 vulnerabilities still awaiting full analysis due to increasing submission rates, with year-over-year growth in CVE reports reaching approximately 30% to 33% [7,8]. Notably, numerous critical vulnerabilities have been disclosed in popular RTOS platforms such as FreeRTOS and Apache NuttX, including memory corruption and privilege escalation bugs that compromise foundational system security [9,10]. Industry trend analyses confirm that embedded systems are high-risk targets frequently affected by exploits that leverage these vulnerabilities [11]. In 2024 alone, more than 40,000 vulnerabilities were cataloged, underscoring the urgency of enhancing RTOS security without compromising real-time performance [12].
As ESs continue to grow in complexity, ensuring reliability and security without compromising performance becomes increasingly critical. Standardized references, such as the Common Weakness Enumeration (CWE) [13] and Common Vulnerabilities and Exposures (CVE) [14], help identify and track known weaknesses. For instance, FreeRTOS [15] recently addressed CVE-2021-43997, a kernel vulnerability threatening the confidentiality and availability of sensitive data. Table 1 summarizes publicly reported FreeRTOS vulnerabilities from September 2018 onward, highlighting security issues ranging from medium to critical severity levels.
Table 1. List of vulnerabilities and CVE identifiers affecting FreeRTOS [16].
To mitigate these risks, researchers have explored both software- and hardware-based approaches to reinforce ES security [17,18,19,20,21,22,23,24,25]. Software approaches often involve unavoidable overhead when trapping to the kernel, and message passing can result in the need for multiple data copying operations. Although current hardware assistance, such as privilege rings [26], Memory Management Unit (MMU), and Mondrian Memory Protection (MMP) [27], try to keep systems tamper-proof against vulnerabilities in RTOSs, they are not efficient enough to meet all security needs. For example, MMUs translate virtual addresses to protect memory and manage the processor cache, and MMP has a map linking addresses to permissions on word-level protection saved in kernel memory.
However, both technologies heavily depend on virtual address handling, which may introduce some variable overhead and potentially affect real-time guarantees on ES. TrustZone [28], another hardware approach developed by ARM to support Cortex-M processors, provides robust levels of protection for IoT devices. This isolates critical security firmware, assets, and private information from the application, reducing the potential for attack. However, it is not entirely immune to vulnerabilities and lacks scalability and fine-grained security. Its primary disadvantage is that if a vulnerability is exploited in the secure world, it could potentially compromise the entire system, as the secure world has full access.
The purpose of the work presented in this paper is to focus on mitigating RTOS vulnerabilities, with a primary emphasis on using FreeRTOS for examples and discussions (see Section 4).

2. Problem State and Motivation

This section outlines the prerequisites for developing an enhanced system call (syscall) model within FreeRTOS, focusing on improving security without compromising real-time performance. Our design objectives address three key requirements:

2.1. Tamper-Proof System Call Code

While system calls (for short, syscalls) in RTOSs provide a means for user tasks to interact with the OS kernel, they have certain limitations. These include a lack of a standardized interface, a limited number of syscalls, low flexibility, and a lack of configurability. For example, in FreeRTOS, syscalls allow unprivileged tasks to temporarily raise their privilege level, access kernel services, and then reset to their original privilege level before returning to the calling task [29]. Unfortunately, this makes them vulnerable to exploitation, as system calls that accept function pointers as parameters can be leveraged to achieve arbitrary code execution. Moreover, FreeRTOS lacks an access control (AC) model, such as a conventional access control list (ACL) or the file systems found in UNIX-based operating systems. As a result, there are no safeguards to prevent attackers from accessing all system resources and the entire memory of such systems.
Existing syscall hardening approaches commonly rely on access control lists, memory protection units, and static or dynamic program analyses aimed at mitigating such vulnerabilities. Our approach advances syscall security by integrating hardware-enforced capability-based permission adjustment, enabling fine-grained, dynamic privilege management that adapts at runtime to observed risk. This capability-based mechanism surpasses static or coarse-grained controls by dynamically monitoring and restricting syscall operations at the hardware level, effectively preventing exploitation vectors such as arbitrary code execution through function pointer abuse. Achieving this, however, requires ensuring that the syscall code itself maintains strict integrity: it must be resistant to memory corruption, avoid re-entrance issues during interrupts, enforce secure parameter management to prevent use-after-free vulnerabilities, and eliminate race conditions that could compromise intended functionality.

2.2. Compliance for Privilege Separation

Privilege management is a core element of secure syscall design, involving precise control over which resources, actions, and conditions are accessible to specific entities. According to OWASP’s definition of Broken Access Control [30], failure to enforce proper restrictions can allow users to exceed their authorized permissions. One manifestation of this issue is the confused deputy problem [31], where a high-privilege process is tricked into performing unauthorized actions on behalf of a less-privileged entity.
While ACLs are common in CPS devices, they typically fail to enforce privilege separation. ACLs define who can access a resource but do not inherently restrict how much authority a task retains for regular operations. Misconfigurations further exacerbate risks, potentially granting unauthorized access to sensitive assets. To address these limitations, our goal is to design a syscall mechanism that enforces strict, role-based privilege separation, ensures functionalities remain within intended scope, and prevents escalation beyond predefined boundaries.

2.3. Real-Time Guarantees

In RTOSs, security mechanisms must not violate real-time constraints, as such violations can introduce delays and degrade system performance. For instance, cached memory translation and protection may compromise the low-latency and deterministic behavior of ES. Therefore, security architectures must be designed to satisfy the stringent timing requirements of ES without impacting performance.

3. Contribution

The significance of this research lies in introducing an adaptive security framework that strengthens RTOS security by leveraging CHERI’s runtime exception analysis and lifecycle management capabilities. The key contributions of this paper are as follows:
  • Presents an in-depth examination of RTOS architectures and their features, with a focus on identifying and analyzing security vulnerabilities (particularly in syscall design) and the inherent challenges of building secure, tamper-resistant embedded systems.
  • Proposes a dynamic security model that augments CHERI’s memory protection capabilities through adaptive policy enforcement. By monitoring CHERI-triggered exceptions, the framework detects anomalous behavior and dynamically adjusts permissions to contain security threats without disrupting essential system operations.
  • Performs a detailed evaluation of the proposed framework’s impact on both security and system performance. Two case studies are presented to demonstrate its effectiveness in handling security violations while preserving the integrity, availability, and real-time properties of the operating system.
The remainder of this paper is organized as follows: Section 4 provides essential background information on the system call workflow in RTOS, which forms the foundation for our proposed model. Section 5 reviews relevant studies in this domain. Section 6 details our proposed model and outlines the design requirements. Section 7 presents the implementation and evaluation of the proposed model, including an analysis and comparison of the results. Finally, Section 8 concludes the paper and discusses potential directions for future research.

4. Background

This section presents the fundamental concepts underpinning the proposed work, using FreeRTOS as a representative example.

4.1. Real-Time Operating System

RTOSs play a critical role in managing embedded applications with stringent timing and reliability constraints, ensuring deterministic task execution and predictable system behavior. FreeRTOS [15], a widely adopted open-source RTOS introduced in 2003 by Richard Barry, is specifically designed to support such requirements through a lightweight yet modular architecture optimized for embedded platforms.
To protect critical resources and maintain system integrity, FreeRTOS implements a two-level privilege model that distinguishes between privileged and unprivileged operations. Privileged operations encompass core kernel functionalities such as task scheduling, synchronization, inter-task communication, and memory management, all of which have direct access to hardware resources. In contrast, unprivileged operations are associated with user applications and custom functionalities, which interact with the kernel exclusively through well-defined APIs. This separation enforces a strict boundary between user code and kernel operations, reducing the risk of accidental faults or malicious interference while preserving system stability.

4.2. FreeRTOS Services

FreeRTOS provides a range of kernel services which form the foundation for reliable and predictable system behavior. These services are outlined as follows.

4.2.1. Memory Management

While virtual memory and MMUs are standard in general-purpose computing, embedded systems have historically used them sparingly due to limited multiprogramming requirements. Modern embedded applications, however, often require controlled memory access among multiple tasks. To address this without MMU complexity, many microcontrollers implement Memory Protection Units (MPUs) [23], which define task-specific memory regions to prevent interference and mitigate memory-related errors. FreeRTOS supports MPUs on ARMv7-M and ARMv8-M cores, with MPU and Floating Point Unit (FPU) support configurable via FreeRTOSConfig.h.
Dynamic memory allocation is also supported, either from the FreeRTOS heap or provided by the application. Standard C functions (malloc(), free()) are usable, but FreeRTOS offers a portable layer optimized for embedded constraints. Five sample heap schemes (heap_1 to heap_5) provide different trade-offs, from simple allocation without task deletion (heap_1) to advanced strategies reducing fragmentation (heap_4) and spanning non-contiguous memory regions (heap_5) for flexible real-time memory management [32].

4.2.2. Task Management

Tasks are created with xTaskCreate() or xTaskCreateStatic(), with the former using heap memory automatically, and the latter requiring developer-provided memory. Task scheduling is priority-based: the highest-priority ready task enters the Running state. FreeRTOS tasks may also enter Blocked, Ready, or Suspended states depending on events or explicit API calls (vTaskSuspend(), vTaskResume()).

4.2.3. Inter-Task Communication

Queues serve as the primary mechanism for inter-task communication, supporting both static and dynamic memory allocation. Queues are created via xQueueCreate(), specifying capacity and item size, and data is exchanged using xQueueSend() and xQueueReceive() [33]. FreeRTOS emphasizes a minimal ROM footprint by using a single queue primitive for all communication.

4.2.4. Resource Management

To ensure safe access to shared resources, FreeRTOS provides mutexes and semaphores in both binary and counting formats [34,35,36,37]. Mutexes enforce mutual exclusion, optionally tracking the owning task, while counting semaphores act as event counters, blocking tasks when the value is zero. Binary semaphores, restricted to values of 0 and 1, typically protect single shared resources.

4.3. An Introduction to CHERI

The CHERI (Capability Hardware Enhanced RISC Instructions) protection model introduces architectural primitives that enable strong safety and security guarantees for C and C++ language pointers. Traditional pointers are typically implemented as architectural integers, which provide no built-in bounds or access protections. In contrast, CHERI introduces capabilities, a new data type that combines an address with metadata describing bounds, permissions, and provenance. These metadata fields allow the hardware to enforce memory safety directly, preventing common vulnerabilities such as buffer overflows, out-of-bounds execution, and unauthorized access to memory regions. Capabilities maintain monotonicity, ensuring that derived capabilities can only restrict, not expand, the access rights of the original capability. They also include a tag bit that indicates validity, along with a permissions mask to control access to data and code, enabling fine-grained enforcement of security policies. A CHERI capability contains several fields that define its properties and control access to memory. Figure 1 illustrates a typical capability layout. Each field plays a specific role:
Figure 1. A 128-bit memory representation of a capability.
  • Tag bit (1 bit): Indicates whether a valid capability is present in a register or memory. If set, the capability is valid and can be dereferenced (subject to additional checks). If clear, the capability is invalid.
  • Permissions mask (perms): Defines hardware-enforced access rights, with the first 12 bits. Permissions are limited by the current architectural ring and influenced by the tag.
  • Flags (f): An architecture-specific field accessible via CGetFlags (read) and CSetFlags (write). No architecture-neutral flags are defined.
  • Object type (otype, 4 bits for 64-bit: Specifies whether the capability is sealed and its type. Sealed capabilities are immutable and non-dereferenceable; they can be unsealed with CUnseal or through control transfer instructions CInvoke, CJALR).
  • Bounds: Encodes the lower and upper limits of the memory region that the capability can reference. Bounds are compressed relative to the address and enforce spatial memory safety by preventing out-of-range accesses.

6. Design Overview

This section presents a capability-based architecture for RTOS that leverages CHERI to enhance system security, focusing on mitigating potential exploits and unauthorized access. The proposed framework integrates CHERI-based capabilities to provide fine-grained memory protection and access control while addressing critical performance and availability requirements. Embedded systems in high-availability, safety-critical environments demand continuous operation with near-zero downtime to ensure reliability and service continuity. The proposed RPA framework aligns with these industrial requirements by dynamically adjusting permissions and enabling fault mitigation without halting threads, thus preserving system availability and meeting zero-downtime operational goals. We first define the key design principles and requirements that guide the framework and then provide a detailed explanation of the model’s operation. The core innovation lies in CHERI-based dynamic permission adjustment, which detects security risks in real time and proactively adapts privileges to mitigate threats.
As mentioned earlier, RTOSs are meticulously designed to operate with limited memory and computing resources, resulting in default configurations that often lack essential security features such as memory protection and robust access control. CHERI-based RTOSs present a promising solution by using capabilities as the foundational security mechanism. Each capability encodes fine-grained bounds and permissions within unforgeable pointers, enforcing both memory safety and controlled access. Hardware-enforced CHERI exceptions provide synchronous checks, triggered whenever a capability violation occurs, such as accessing memory outside permitted bounds, misusing permissions, or referencing invalid capabilities.
When a capability exception is detected, CHERI halts the offending thread immediately, preventing further execution with unauthorized or corrupted capabilities and preserving system integrity. While this fail-stop approach is effective for security, it introduces challenges for high-availability systems that require continuous operation. To overcome this limitation, the proposed framework implements an adaptive, risk-aware mechanism that dynamically adjusts privileges based on detected risks, maintaining functionality without compromising security. A detailed quantitative trade-off analysis between false positives and availability, including thread continuation rates and system downtime, is provided in Section 7.2, demonstrating that the proposed approach delivers strong protection while substantially improving system availability.
However, the fail-stop approach, which halts offending threads immediately upon capability violations, can result in thread termination and service disruption. This is problematic for high-availability systems where continuous operation is critical. The RPA framework addresses this research gap by implementing adaptive, risk-aware privilege adjustments that maintain system continuity without forcing thread termination, thereby mitigating the fail-stop limitation inherent in conventional CHERI-based RTOS designs.
As illustrated in Listing 1, the code snippet defines the capability_t structure, representing a capability in CHERI. Each field in the structure captures essential metadata, including the capability’s bounds, current address, access permissions, object type, and validity status. Building on this representation, Listing 2 demonstrates a load operation using a CHERI capability. The load_from_capability function takes a capability_t pointer and an offset as arguments, performing several checks before executing the load operation.
Listing 1. Capability structure in the code.
Mathematics 13 03304 i001
Listing 2. Pseudo-code for a Load Instruction Using my_cap.
Mathematics 13 03304 i002
   First, a bounds check ensures that the requested offset lies within the capability’s length, preventing memory access outside the allocated region. Next, a permission check verifies that the PERM_LOAD flag is set in the capability’s permissions bitmask, enforcing the principle of least privilege. Additionally, a tag check validates the capability’s integrity by inspecting the tag field—a critical step in CHERI to prevent the use of corrupted or forged capabilities. If all checks pass, the function proceeds with memory access by dereferencing the address computed from the capability’s base plus the given offset.

6.1. Risk Detection Mechanism

This section presents an algorithm called Risk-aware Permission Adjustment (RPA) that allows the kernel to proactively monitor capability actions and detect anomalous activity that could indicate potential security breaches. Unlike traditional adaptive access control systems such as RBAC with static or real-time policy updates, the RPA framework uniquely leverages hardware-enforced CHERI exceptions as immediate and fine-grained indicators of security violations. Our design combines thread-level and compartment-level sliding-window monitoring to capture both localized and system-wide risk patterns. The dynamic risk score calculation incorporates exception frequency, severity, and timing—providing context-aware privilege adjustments. This integration facilitates rapid, adaptive permission modifications that maintain operational continuity while enforcing security, surpassing the reactive nature of existing models. First, we define key terms used in the risk detection algorithm:
  • Risk: Any unusual behavior that deviates from expected operations may indicate a potential security breach. CHERI utilizes hardware-enforced capabilities to provide fine-grained memory protection and prevent unauthorized access. These capabilities trigger exceptions when a thread, compartment, or other task entity attempts an action that violates defined permissions, such as accessing memory outside bounds or performing operations without the required privileges. We leverage these exceptions to define a quantitative variable called the Risk Score, calculated based on exception features discussed later in this chapter. When an exception occurs in CHERI, specific registers capture detailed information, including the type and cause of the exception and the address of the faulting memory reference. These registers include the following:
    mcause: Machine Cause register (32 bits); contains the cause of the standard RISC-V exception or interrupt.
    mepc: Machine Exception Program Counter register (32 bits); stores the address of the instruction that caused the exception.
    mtval: Machine Trap Value register (32 bits); holds exception-specific information to assist in handling capability-related exceptions, as illustrated in Figure 2.
    The proposed model focuses on using the mtval register to extract relevant exception information. As shown in Listing 3, register decoding interprets the fields as follows:
    capcause = mtval & 0x1f: Extracts the lower 5 bits of mtval (see Table 2).
    badcap = (mtval > > 5) & 0x3f: Extracts bits 5–10 of mtval.
Figure 2. mtval register format for capability exception.
Table 2. Exceptions in CHERI and their impact.
As shown in Table 2, exceptions are categorized into two groups based on their impact score: Critical and Moderate. Critical exceptions trigger an immediate halt of the affected threads through a force-unwind mechanism, ensuring the system is protected from further compromise. In contrast, Moderate exceptions are handled by the proposed exception handler, which performs permission adjustments to enable recovery while maintaining operational integrity. Table 3 summarizes mitigation strategies for moderate-level exceptions.
Table 3. Moderate-level exceptions in CHERI that need mitigation.
Listing 3. CHERIoT-RTOS core scheduler initialization.
Mathematics 13 03304 i003
  • Risk Monitoring—To assess security risks, the system continuously monitors and logs recently triggered exceptions, computing a risk score using two complementary approaches:
    Thread-based monitoring: Exceptions are recorded at the thread level to track the number and type of faults each thread triggers.
    Compartment-based monitoring: Exceptions are recorded per compartment to detect broader fault patterns and evaluate the security posture of each compartment. In CHERI, a compartment is an isolated execution context enforcing strict memory safety via hardware capabilities. Each compartment consists of a Program Counter Capability (PCC) for executing code and accessing read-only data, a Capability Global Pointer (CGP) for mutable global variables, and an import/export interface for secure interactions with other compartments or external resources.
    Regardless of monitoring scope, exception attributes are evaluated to determine criticality:
    Exception Severity: Mapped from the predefined CHERI exception list and its associated impact score (Table 2).
    Exception Frequency: Number of exceptions triggered by a thread or compartment within the current monitoring window.
    Average Exception Interval: Mean time between consecutive exceptions for a given thread or compartment, indicating fault rate.
  • Risk Table—At the core of the monitoring algorithm is a risk table that logs exception-related metadata and correlates it with threads or compartments. Key fields include the following:
    Thread/Compartment ID: Unique identifier of the faulting entity.
    CapCause: Cause of the exception as recorded in the mtval register, corresponding to the values in Table 2.
    Count: Total number of exceptions recorded for the entity within the monitoring window (capped by CONFIG_MAX_CHERI_EXCEPTIONS).
    Timestamp: Time of the most recent exception.
    Avg Interval: Average time gap between recent exceptions.
    Window_Start: Start time of the current 5000 ms sliding monitoring window. Exceptions outside this window are discarded, and counts reset at each window rollover.
    The CHERI RTOS operates with statically defined threads and fixed stack sizes. By default, the system supports eight threads, configurable up to 255. In our implementation of thread-based monitoring, the risk table retains records for the 16 most recent threads that have triggered exceptions.
    To accurately present the exception rate in a CHERI-based RTOS, two bounding parameters must be considered:
    Scheduler tick frequency—Typically ranging from 1 to 10 kHz, configurable via the CONFIG_SCHEDULER_TICK_FREQ option in the SDK headers.
    Execution context—Determines how often a faulty thread can trigger exceptions, potentially on every cycle. For example, an infinite loop performing repeated capability violations could generate exceptions at maximum frequency. In practice, hardware watchdogs or compartment-level timeouts (e.g., via thread_sleep) eventually preempt such behavior.
    Table 4 outlines the risk table format, including the size of each entry and the possible value ranges.
Table 4. Risk table format.
  • Risk Score—The risk score is designed to provide a comprehensive assessment of potential security threats, relying solely on exception severity risks overlooking scenarios in which frequent but less severe exceptions indicate a deeper issue. To address this, we employ a composite equation that integrates multiple exception attributes, yielding a more balanced and accurate risk evaluation.
    Updating the risk table involves the following steps:
    • Record the cause of the newly triggered exception.
    • Increment the exception count for the corresponding thread or compartment.
    • Calculate the time interval between the two most recent exceptions to estimate exception frequency.
    • Update the timestamp to reflect the latest occurrence.
    • Compute R i s k _ S c o r e I D using Equation (1).
    R i s k S c o r e I D = α · I · C 1 + β · A
    where
    R i s k S c o r e [0, 1]: The risk score that represents the degree of abnormal behavior per thread or compartment.
    I D : Task or comportment ID.
    α [0.01, 0.1]: A weight parameter that controls the relative importance of the impact score.
    I [0, 10]: Impact score or severity score assigned to the exception based on the impact score table.
    C [0, 10]: Count of exceptions triggered by a particular thread or compartment.
    β [0.01, 0.05]: A weighting factor (ranging from 0 to 1) that adjusts the impact of the time interval between exceptions on the risk score.
    A [10, 5000 ms]: The average interval represents the time (in milliseconds) between the most recent exception and the preceding one for a specific task.
Tuning the parameters α and β is essential to ensuring accurate and context-sensitive risk assessment. These parameters were empirically tuned through sensitivity analysis on synthetic and real exception traces. We varied α within [0.01, 0.1] and β within [0.01, 0.05] to calibrate the relative impact of exception severity and temporal frequency on the risk score. Lower α values emphasize tolerance toward severity, while higher β values increase the sensitivity to rapid repeat exceptions. Selecting values close to zero leads to near-zero risk scores that diminish the detection sensitivity, while larger values cause disproportionately high-risk scores that may increase false positives. Thus, the chosen moderate ranges balance sensitivity and specificity effectively. This balance helps reduce false positives while maintaining effective detection and mitigation responsiveness. When increased fault severity or frequency is observed, adjusting these parameters enables more aggressive or conservative mitigation aligned with security policy revisions or runtime conditions.
Once the RiskScore for each thread or compartment is calculated, it is compared against two thresholds, x and y, to determine the appropriate system response. These thresholds balance detection sensitivity against false positives and can be tuned according to operational requirements and empirical observations.
If Sec urity level = high alert 0 < R i s k S c o r e I D < x else if Sec urity level = normal 0 < R i s k S c o r e I D < y 0 < x < y < 1
We define the threshold parameters as follows:
  • x = 0.5 (Middle threshold)—In high-alert mode, any risk score above 0 and below 0.5 triggers mitigation actions, enabling a more sensitive response to potential threats.
  • y = 0.7 (Upper threshold)—In normal mode, risk scores below 0.7 trigger mitigation actions, while scores above 0.7 indicate a more severe risk.
If the risk score exceeds 0.5 in high-alert mode or 0.7 in normal mode, the situation is classified as critical. In such cases, the system initiates immediate and severe countermeasures, such as isolating or terminating the offending thread or compartment, regardless of the current security mode.
The core idea of progressive containment is to adapt the strictness of mitigation based on the evolving risk score and violation history. When a moderate-level exception is detected, the framework computes the necessary reduction in capability permissions or bounds, such as a 50% bound shrink as a representative decrement chosen from empirical testing that balances security and system availability. This adaptive approach avoids binary decisions (full termination vs. no action), enabling incremental restriction tailored to the severity and recurrence of violations. Thresholds and percentage reductions are configurable, allowing fine-tuning for different deployment scenarios or security policies.

6.2. Permission Adjustment

In the CHERI protection model, exceptions occur when a thread or compartment attempts an operation that violates its assigned capabilities (permissions). These violations may arise from various causes, and the resulting exceptions serve as a key security mechanism to prevent unauthorized actions. When the risk score determined in the previous step meets or exceeds the threshold for permission adjustment, the algorithm examines the exception cause to determine the appropriate response. It then applies targeted restrictions to the affected capabilities. By enforcing such restrictions dynamically, the system ensures that the task continues operating within its intended security boundaries while minimizing the likelihood of further violations. Table 5 summarizes the potential security violations associated with each exception type and provides guidance on the corresponding permission constraints applied by the proposed model to mitigate malicious or unsafe behavior.
Table 5. Restricting tasks’ permissions to prevent these security breaches.

7. Implementation and Evaluation

We implemented the RPA mechanism on CHERIoT RTOS, an open-source CHERI-based OS for embedded platforms. Our implementation integrates with the CHERIoT-extended LLVM (CHERIoT-clang) toolchain and the FreeRTOS kernel, targeting the CHERIoT-Ibex RISC-V core, which supports hardware-enforced capabilities. Firmware builds are managed through the xmake build system for automated and reproducible compilation and linking. The experimental setup was meticulously designed to ensure consistency and reproducibility, targeting native CHERI-compliant hardware or a cycle-accurate CHERI simulator derived from the CHERI formal specification. Specific toolchain and emulator software versions are documented in the public CHERIoT-Platform GitHub repository (January 2025) to enable external validation and future research extensions. This standardized toolchain provides a stable foundation for integrating CHERI capabilities into FreeRTOS, enabling rigorous evaluation.
Through these experiments, we demonstrated the following key features:
  • Continuous Operation: Maintains system functionality during capability violations without requiring full thread termination.
  • Precision Security: Selectively revokes permissions (e.g., Execute, Load, Store, and Seal) based on the violation type.
  • Progressive Containment: Gradually reduces capability bounds to minimize potential damage.
  • Policy-Driven Responses: Enables configurable, context-aware mitigation strategies tailored to the nature of each violation.

7.1. Security Effectiveness Evaluation

To comprehensively evaluate the security effectiveness of the RPA mechanism, a series of fault injection experiments were conducted. These experiments aimed to assess the system’s capability to detect, mitigate, and recover from unauthorized behaviors or access patterns that commonly threaten real-time operating systems. A total of 35 simulated attacks were executed and analyzed. The objective of this evaluation is to determine whether RPA can effectively detect unauthorized activity, revoke dangerous permissions, contain the impact of capability misuse, and ensure system continuity, all while maintaining CHERI’s foundational security guarantees. The assessment focused on four dimensions: the accuracy of detection, the completeness of mitigation, the continuity of execution after a fault, and the containment of potential damage.
In total, 40 simulated attack scenarios were tested and analyzed, then categorized into two distinct groups.
  • Twenty real-world CVEs: These vulnerabilities, listed in Table 6, were selected for their relevance to FreeRTOS and similar platforms. Each was modeled and executed on both a standard FreeRTOS system and our RPA-enhanced CHERIoT system. This approach allowed us to directly compare baseline and mitigated behaviors.
Table 6. CVE coverage: FreeRTOS vs. proposed RPA framework.
  • Fifteen abstract vulnerability classes: To assess generalizability, we synthesized attacks representing common exploitation techniques (e.g., stack smashing, heap spraying, and privilege escalation). These are summarized in Table 7 and were executed exclusively on the RPA-enhanced system.
Table 7. Summary of custom vulnerability pattern test results.
To strengthen the statistical rigor of our evaluation, each simulated attack scenario was executed across multiple independent runs (minimum 10 iterations per test case) to capture variability in detection and mitigation outcomes. For each test, we computed statistical measures including the mean detection accuracy, mitigation completeness, and execution continuity, along with their variances. Confidence intervals at the 95% level were calculated for key metrics to ensure results are statistically significant and robust to execution variability. This rigorous approach allows us to reliably assess the effectiveness and consistency of the RPA framework in mitigating diverse attack patterns.
The first set of tests focused on 20 CVEs. For example, CVE-2018-16522 is detailed in Listing 4. These vulnerabilities were selected for their significance to embedded systems and for illustrating specific weaknesses in FreeRTOS. Each vulnerability was modeled within a test environment and evaluated under both FreeRTOS and the proposed RPA-enabled CHERIoT system. The comparative results are summarized in Table 6. As anticipated, FreeRTOS demonstrated no built-in defenses against any of the 20 vulnerabilities tested. In each instance, exploitation was successful without detection or containment, resulting in issues such as privilege escalation, remote code execution, data corruption, or memory disclosure. In contrast, the proposed RPA framework effectively mitigated 18 of the 20 vulnerabilities by dynamically revoking high-risk permissions (e.g., Execute and Store), implementing spatial containment through a 50% reduction in capability bounds, and ensuring task-level isolation within compartment boundaries.
Listing 4. CVE-2018-16522.
Mathematics 13 03304 i004
Two vulnerabilities, CVE-2018-16602 and CVE-2018-16603 were only partially mitigated. These involved memory disclosure attacks that the RPA framework successfully detected and addressed by revoking Load permissions and applying spatial containment. However, complete mitigation, which would encompass total memory erasure or data sealing, necessitates hardware-level data sanitation features that are not yet present in the current CHERIoT implementation. Despite this limitation, the framework effectively prevented further unauthorized access following the initial violation, significantly reducing residual risk.
This partial mitigation highlights a critical limitation: residual sensitive data may remain accessible without advanced hardware-assisted sanitization. While the framework effectively contains the immediate impact of disclosure, it cannot guarantee complete memory sanitization in its current form, leaving this challenge to future work. Promising directions include integrating hardware-assisted sanitization techniques into capability architectures, such as the segment folding and shadow memory encoding techniques exemplified by GiantSan [73], and architectural support for efficient data sanitization demonstrated by Evanesco et al. [74]. These emerging mechanisms aim to provide efficient, low-overhead, and scalable sanitization, thereby strengthening defenses against residual data leakage and advancing the security guarantees of capability-based RTOS designs like CHERIoT.
The second phase of testing involved a focused set of 15 custom-designed test cases, each corresponding to a generalized vulnerability class commonly observed in embedded and real-time systems. These cases were not derived from specific CVEs but were constructed to simulate prevalent exploitation techniques, including stack smashing, pointer overwrites, double-free bugs, race conditions, memory disclosure, and code-reuse attacks (such as return-oriented programming and heap spraying). Each pattern was implemented at the kernel level and triggered through deliberate fault injections utilizing memory manipulation, capability misconfiguration, and race-inducing delays. This setup facilitated a realistic evaluation of the proposed RPA framework’s response under targeted exploit conditions.
As summarized in Table 7, FreeRTOS does not possess any native mechanisms for detecting or preventing these vulnerabilities. In contrast, the RPA-enhanced system effectively mitigated all 15 classes of attacks. For instance, stack smashing was contained through enforced bounds on stack capabilities, while pointer overwrites were mitigated by disabling indirect calls on suspect capabilities. Double-free vulnerabilities triggered immediate capability invalidation, and memory disclosure vectors—such as format strings or buffer over-reads—were restricted through enforced access policies and compartment sealing.
In 14 out of 15 cases, the affected thread was able to continue execution in a degraded but safe state following mitigation. The exception occurred during repeated forged pointer injection, where the violation reoccurred rapidly, surpassing the threshold defined in the policy escalation logic. In this instance, the system responded by safely terminating the compromised thread. This behavior demonstrates the effectiveness of RPA’s multi-stage policy model, which applies containment for isolated faults while escalating response severity in cases of persistent or potentially malicious activity. In contrast, the standard CHERI approach terminates all threads.

7.2. Runtime Overhead and Availability Valuation

While security is a critical objective in embedded systems, it must be carefully balanced with system availability and performance, particularly in real-time and safety-critical environments. This section evaluates the runtime efficiency and operational continuity of the proposed RPA framework. Specifically, we investigate whether the integration of dynamic mitigation logic affects task responsiveness or introduces significant system downtime under fault conditions. To this end, a series of benchmark experiments were conducted under controlled violation scenarios. Each test case was executed across three system configurations: baseline FreeRTOS, default CHERIoT-RTOS (without adaptive mitigation), and the proposed RPA-enhanced CHERIoT. The evaluation focused on three primary metrics: thread continuation rate, violation handling time, and total system downtime. A summary of the results is provided in Table 8.
Table 8. System availability and violation handling overhead across configurations.
In terms of thread continuation, FreeRTOS achieved a 100% rate, which is somewhat misleading, as it lacks mechanisms to detect or block violations. Consequently, all faults can propagate unchecked, potentially resulting in memory corruption or unauthorized code execution. In contrast, the default CHERIoT environment terminates any thread involved in a capability violation, resulting in a 0% continuation rate. While this approach ensures strict isolation, it can lead to significant availability loss. The RPA methodology offers a balance between these two extremes. By implementing targeted mitigations instead of thread termination, the system maintained thread execution in 92% of the tested violation scenarios. Thread termination was only initiated in cases of repeated or unrecoverable violations, in accordance with predefined escalation policies.
The third key metric, system downtime, represents the cumulative execution time lost due to halts or delays in recovery triggered by violations. The default CHERIoT recorded 18.4 s of downtime during our test cycle, primarily due to repeated thread terminations and reinitializations. In contrast, the RPA-enhanced system reduced downtime to only 0.9 s, reflecting a 95% improvement by enabling most threads to recover dynamically following fault mitigation. FreeRTOS demonstrated no downtime under similar scenarios, but this outcome is a result of its inability to detect or respond to violations, rather than an indication of its resilience.
By comparison, formally verified microkernels such as seL4 offer strong isolation and reliability guarantees through comprehensive formal verification. seL4 is designed to provide minimal and predictable system downtime, with mathematically proven correctness ensuring fault containment and deterministic behavior in real-time environments. While seL4 focuses on providing a minimal trusted kernel with rigorous correctness proofs, our RPA framework complements this by enabling adaptive, capability-based mitigations that preserve thread execution and reduce downtime in CHERI-enabled RTOSs. This comparison highlights different but complementary approaches for balancing security and high availability in modern embedded systems.
To further understand how RPA responds to specific types of faults, we evaluated continuity across the four main categories of capability violations: Execute, Load, Store, and Seal. These categories were tested individually under CHERIoT and RPA configurations, and the outcomes are detailed in Table 9. As expected, default CHERIoT halted execution in every case. In contrast, the RPA framework successfully handled all four violation types by selectively removing the corresponding permissions and shrinking capability bounds, enabling safe continuation of execution in each case.
Table 9. Execution continuity after capability violations.
In addition to these core performance metrics, implementation data confirms that the RPA mechanism incurs minimal resource overhead. The inclusion of mitigation logic and policy enforcement code increased the binary size by only 2.1 kilobytes, representing approximately 0.8% of the baseline system image. The memory usage required to store risk evaluation tables and policy metadata added just 0.9 kilobytes to the runtime footprint. Finally, system scheduling behavior remained virtually unaffected; worst-case task response time increased by less than 0.1%, which falls well below thresholds of concern for real-time scheduling policies.
Violation handling time was assessed to determine the runtime cost associated with implementing dynamic mitigations. FreeRTOS, which does not conduct violation checks, exhibited an average overhead of 0.8 microseconds per memory access during stress testing. The default CHERIoT, which is equipped with hardware-enforced exception traps, demonstrated a lower latency of 0.5 microseconds due to its immediate termination strategy. The proposed RPA model introduced a modest increase in latency, averaging 2.3 microseconds per violation event. This additional cost can be attributed to the logic required for policy evaluation, capability adjustment, and containment enforcement. Nevertheless, this increase remains within acceptable limits for real-time systems and is offset by significant gains in system continuity. While the measured latency increase is minimal in our experiments, scalability to larger multi-core and distributed IoT platforms is an important consideration. The modular design of the RPA framework supports parallelized risk evaluation and localized mitigation enforcement across cores, minimizing synchronization overhead. Moreover, the low resource requirements and near-zero impact on scheduling behavior indicate strong potential for scalability in complex, multi-core IoT environments. Ongoing and future work will focus on quantitatively evaluating scalability performance and optimizing coordination mechanisms to ensure robustness and efficiency on heterogeneous processing architectures.

8. Conclusions

This paper introduces a novel, adaptive security framework for CHERI-enabled RTOSs, addressing the challenges of protecting real-time embedded systems against memory-based and privilege-based attacks. By continuously monitoring CHERI-triggered exceptions, computing a dynamic risk score, and applying targeted permission adjustments, the proposed RPA framework effectively detects and mitigates security threats while preserving system functionality. Notably, the RPA framework maintains thread execution in 92% of tested violation scenarios, demonstrating a significant improvement in system availability by avoiding unnecessary thread termination. Experimental evaluation demonstrates that the RPA-enhanced CHERIoT system mitigates most tested vulnerabilities, including both real-world CVEs and generalized attack patterns, while maintaining continuous operation for most threads. Runtime overhead remains low and within acceptable limits for real-time applications, and system downtime is drastically reduced compared to default CHERIoT behavior. These results validate the finding that strong security enforcement can be integrated into RTOS environments without compromising performance or availability. Beyond these technical achievements, this framework has significant implications for IoT safety-critical deployments. Enhancing the resilience and reliability of embedded systems is essential in healthcare, where secure device operation directly impacts patient safety and privacy. In Industrial Control Systems and manufacturing, robust protections reduce risks of costly operational disruptions and safety hazards. Furthermore, smart city infrastructures, including traffic management, energy distribution, and public transportation, rely on a secure and continuous system functioning well to maintain public safety and service quality. Overall, the proposed RPA framework advances the state of the art in embedded system security by balancing performance, security, and availability. It lays a foundation for deploying more resilient IoT systems in increasingly complex and interconnected environments, where safety-critical applications demand both strong security assurance and real-time operational guarantees.

9. Future Direction

This work establishes a foundation for resilient and adaptive embedded systems; however, the evolving threat landscape and growing system complexity demand continued advancement. In the short term, our research will focus on developing machine learning-driven risk scoring models that anticipate vulnerabilities and support real-time, adaptive security policy adjustments, thereby strengthening proactive threat responses under system constraints. We will also pursue the formal verification of dynamic security policies to rigorously ensure correctness, reliability, and certification in safety-critical domains such as aerospace, automotive, and medical systems. Looking further ahead, longer-term directions will be crucial to realizing fully autonomous cyber–physical system security. These include exploring cross-layer mechanisms for mixed-criticality systems that coordinate protection across hardware, kernel, and application layers; designing scalable, energy-efficient solutions for secure IoT environments—particularly across multi-core and distributed platforms with energy-aware requirements; and progressively integrating adaptive and formally verified mechanisms into self-optimizing security frameworks that maintain robust operation in resource-constrained environments.   

Author Contributions

Conceptualization, M.S.S. and J.A.-F.; methodology, M.S.S. and J.A.-F.; software, M.S.S.; validation, M.S.S. and J.A.-F.; formal analysis, M.S.S. and J.A.-F.; investigation, M.S.S.; resources, M.S.S.; data curation, M.S.S.; writing—original draft preparation, M.S.S.; writing—review and editing, M.S.S. and J.A.-F.; visualization, M.S.S.; supervision, J.A.-F.; project administration, J.A.-F.; funding acquisition, J.A.-F. All authors have read and agreed to the published version of the manuscript.

Funding

This work was supported by Schweitzer Engineering Laboratories (SEL).

Data Availability Statement

The original contributions presented in this study are included in the article. Further inquiries can be directed to the corresponding author.

Conflicts of Interest

The authors declare no conflicts of interest.

Abbreviations

    The following abbreviations are used in this manuscript:
ACAccess Control
ACLAccess Control List
ACTAccess Control Table
ARMAdvanced RISC Machine
APIApplication Programming Interface
CPSCyber–Physical Systems
CGPCapability Global Pointer
CSRControl and Status Registers
CVECommon Vulnerabilities and Exposures
CWECommon Weakness Enumeration
DDCDefault Data Capability
DMADirect Memory Access
EROSExtremely Reliable Operating System
ESEmbedded Systems
EOSEmbedded Operating Systems
FPUFloating Point Unit
GPRGeneral-Purpose Registers
HALHardware Abstraction Layer
MLMachine Learning
MMUMemory Management Unit
MMPMondrian Memory Protection
MPDMutable Protection Domains
MPUMemory Protection Unit
MQTTMessage Queuing Telemetry Transport
PCCProgram Counter Capability
RBACRole-Based Access Control
RPARisk-aware Permission Adjustment
RTOSReal-Time Operating System

References

  1. Murti, K.C.S. Security in embedded systems. In Design Principles for Embedded Systems; Springer: Singapore, 2022; pp. 419–441. [Google Scholar]
  2. Varastan, B.; Jamali, S.; Fotohi, R. Hardening of the Internet of Things by using an intrusion detection system based on deep learning. Clust. Comput. 2023, 27, 2465–2488. [Google Scholar] [CrossRef] [Scilit]
  3. Longueira-Romero, A.; Iglesias, R.; Gonzalez, D.; Garitano, I. How to quantify the security level of embedded systems? A taxonomy of security metrics. In Proceedings of the 18th International Conference on Industrial Informatics (INDIN), Warwick, UK, 20–23 July 2020; Volume 1, pp. 153–158. [Google Scholar]
  4. Luna, R.; Islam, S.A. Security and reliability of safety-critical RTOS. SN Comput. Sci. 2021, 2, 356. [Google Scholar] [CrossRef] [Scilit]
  5. Labs, A. Critical Flaws Found in VxWorks RTOS That Powers Over 2 Billion Devices. Detailed Report on Multiple Zero-Day Vulnerabilities Termed URGENT/11, Affecting VxWorks RTOS Across Many Industries, Enabling Remote Code Execution and Denial-of-Service Attacks. 2019. Available online: https://thehackernews.com/2019/07/vxworks-rtos-vulnerability.html (accessed on 10 August 2025).
  6. Journal, H. Medical Devices Affected by 13 Siemens Nucleus RTOS TCP/IP Stack Vulnerabilities. Summary of Critical Vulnerabilities Discovered in Siemens Nucleus RTOS Affecting Medical Devices, Highlighting Risks of Remote Exploitation and Need for Urgent Mitigation. 2024. Available online: https://www.hipaajournal.com/medical-devices-affected-by-13-siemens-nucleus-rtos-tcp-ip-stack-vulnerabilities/ (accessed on 10 August 2025).
  7. VulnCheck. Danger Is Still Lurking in the NVD Backlog. 2024. Available online: https://vulncheck.com/blog/nvd-backlog-exploitation-lurking (accessed on 10 August 2025).
  8. Magazine, I. NVD Revamps Operations as Vulnerability Reporting Surges. 2025. Available online: https://www.infosecurity-magazine.com/news/nvd-revamps-operations-cve-surge/ (accessed on 10 August 2025).
  9. NIST. CVE-2024-28115 Detail—FreeRTOS Local Privilege Escalation. 2024. Available online: https://nvd.nist.gov/vuln/detail/CVE-2024-28115 (accessed on 20 July 2025).
  10. NIST. CVE-2025-35003 Detail—Apache NuttX RTOS Vulnerability. 2025. Available online: https://nvd.nist.gov/vuln/detail/CVE-2025-35003 (accessed on 20 July 2025).
  11. VulnCheck. 2025 Q1 Trends in Vulnerability Exploitation. 2025. Available online: https://vulncheck.com/blog/exploitation-trends-q1-2025 (accessed on 10 August 2025).
  12. SecPod. The Cybersecurity Landscape of 2024: Key Insights from the Annual Vulnerability Report. 2025. Available online: https://www.secpod.com/blog/the-cybersecurity-landscape-of-2024-key-insights-from-the-annual-vulnerability-report/ (accessed on 10 August 2025).
  13. MITRE. Common Weakness Enumeration (CWE). Available online: https://cwe.mitre.org/ (accessed on 20 July 2025).
  14. CVE Details. Vulnerabilities by Types. Available online: https://www.cvedetails.com/vulnerabilities-by-types.php (accessed on 20 July 2025).
  15. 2023. Available online: https://github.com/FreeRTOS/FreeRTOS (accessed on 1 June 2025).
  16. AWS. FreeRTOS Security Updates. 2023. Available online: https://aws.amazon.com/freertos/security-updates/ (accessed on 1 June 2025).
  17. Walls, R.J.; Brown, N.F.; Le Baron, T.; Shue, C.A.; Okhravi, H.; Ward, B.C. Control-flow integrity for real-time embedded systems. In Proceedings of the 31st Euromicro Conference on Real-Time Systems (ECRTS), Stuttgart, Germany, 9–12 July 2019. [Google Scholar]
  18. FreeRTOS Plus. FreeRTOS+Trace. 2023. Available online: https://www.freertos.org/Documentation/03-Libraries/02-FreeRTOS-plus/05-FreeRTOS_plus_Trace/00-FreeRTOS_Plus_Trace (accessed on 10 October 2025).
  19. Malenko, M.; Baunach, M. Device driver and system call isolation in embedded devices. In Proceedings of the 22nd Euromicro Conference on Digital System Design (DSD), Kallithea, Greece, 28–30 August 2019; pp. 283–290. [Google Scholar]
  20. Chandrasekaran, P.; Kumar, K.S.; Minz, R.L.; D’Souza, D.; Meshram, L. A multi-core version of FreeRTOS verified for datarace and deadlock freedom. In Proceedings of the Twelfth Conference on Formal Methods and Models for Codesign (MEMOCODE), Lausanne, Switzerland, 19–21 October 2014; pp. 62–71. [Google Scholar]
  21. Holzmann, G.J. The model checker SPIN. IEEE Trans. Softw. Eng. 1997, 23, 279–295. [Google Scholar] [CrossRef] [Scilit]
  22. Xia, H.; Woodruff, J.; Barral, H.; Esswood, L.; Joannou, A.; Kovacsics, R.; Chisnall, D.; Roe, M.; Davis, B.; Napierala, E.; et al. CheriRTOS: A Capability Model for Embedded Devices. In Proceedings of the 36th International Conference on Computer Design (ICCD), Orlando, FL, USA, 7–10 October 2018; pp. 92–99. [Google Scholar]
  23. Memory Protection Unit (MPU) Support in FreeRTOS. 2022. Available online: http://www.openrtos.org/FreeRTOS-MPU-memory-protection-unit.html (accessed on 5 October 2025).
  24. High Integrity Systems. Building on FreeRTOS for Safety Critical Applications. 2022. Available online: https://www.highintegritysystems.com/downloads/white_papers/Building_on_FreeRTOS_Safety_Critical_Applications.pdf (accessed on 1 June 2025).
  25. Almatary, H.; Dodson, M.; Clarke, J.; Rugg, P.; Gomes, I.; Podhradský, M.; Neumann, P.G.; Moore, S.W.; Watson, R.N.M. CompartOS: CHERI Compartmentalization for Embedded Systems. arXiv 2022, arXiv:2206.02852. [Google Scholar] [CrossRef] [Scilit]
  26. Bratus, S.; Johnson, P.C.; Ramaswamy, A.; Smith, S.W.; Locasto, M.E. The cake is a lie: Privilege rings as a policy resource. In Proceedings of the 1st ACM Workshop on Virtual Machine Security, Alexandria, VA, USA, 27 October 2008; pp. 33–38. [Google Scholar]
  27. Witchel, E.; Cates, J.; Asanović, K. Mondrian memory protection. In Proceedings of the 10th International Conference on Architectural Support for Programming Languages and OS, San Jose, CA, USA, 5–9 October 2002; pp. 304–316. [Google Scholar]
  28. Arm. TrustZone for Cortex-M. 2023. Available online: https://www.arm.com/technologies/trustzone-for-cortex-m (accessed on 10 June 2025).
  29. Using FreeRTOS on ARMv8-M Microcontrollers. Available online: https://www.freertos.org/Community/Blogs/2020/using-freertos-on-armv8-m-microcontrollers (accessed on 5 October 2025).
  30. OWASP Foundation. A01: Broken Access Control, OWASP Top 10. 2021. Available online: https://owasp.org/Top10/A01_2021-Broken_Access_Control/ (accessed on 10 June 2025).
  31. Hardy, N. The Confused Deputy. 2023. Available online: https://web.archive.org/web/20031205034929/http://www.cis.upenn.edu/~KeyKOS/ConfusedDeputy.html (accessed on 12 July 2025).
  32. Memory Management in FreeRTOS. 2022. Available online: https://www.freertos.org/a00111.html (accessed on 5 October 2025).
  33. Inter-Task Communications in FreeRTOS. Available online: https://www.freertos.org/message_passing_performance (accessed on 5 October 2025).
  34. Mutexes in FreeRTOS. 2023. Available online: https://www.freertos.org/Real-time-embedded-RTOS-mutexes.html (accessed on 5 October 2025).
  35. Semaphores in FreeRTOS. 2023. Available online: https://www.freertos.org/a00113.html (accessed on 5 October 2025).
  36. Binary Semaphores in FreeRTOS. 2023. Available online: https://www.freertos.org/Embedded-RTOS-Binary-Semaphores.html (accessed on 5 October 2025).
  37. Counting Semaphores in FreeRTOS. 2023. Available online: https://freertos.org/Real-time-embedded-RTOS-Counting-Semaphores.html (accessed on 5 October 2025).
  38. Tsai, T.; Singh, N. Libsafe: Transparent system-wide protection against buffer overflow attacks. In Proceedings of the International Conference on Dependable Systems and Networks, Washington, DC, USA, 23–26 June 2002; p. 541. [Google Scholar]
  39. Lin, Z.; Mao, B.; Xie, L. LibsafeXP: A practical and transparent tool for run-time buffer overflow preventions. In Proceedings of the Information Assurance Workshop, West Point, NY, USA, 21–23 June 2006; pp. 332–339. [Google Scholar]
  40. Dang, T.H.; Maniatis, P.; Wagner, D. The performance cost of shadow stacks and stack canaries. In Proceedings of the 10th ACM Symposium on Information, Computer and Communications Security, Singapore, 14 April–17 March 2015; pp. 555–566. [Google Scholar]
  41. Midi, D.; Payer, M.; Bertino, E. Memory safety for embedded devices with nesCheck. In Proceedings of the ACM on Asia Conference on Computer and Communications Security, Abu Dhabi, United Arab Emirates, 2–6 April 2017; pp. 127–139. [Google Scholar]
  42. Dhurjati, D.; Kowshik, S.; Adve, V.; Lattner, C. Memory safety without garbage collection for embedded applications. ACM Trans. Embed. Comput. Syst. (TECS) 2005, 4, 73–111. [Google Scholar] [CrossRef] [Scilit]
  43. The Ruby Programming Language. A Programmer’s Best Friend. Available online: https://www.ruby-lang.org/en/ (accessed on 12 July 2025).
  44. Matsakis, N.D.; Klock, F.S. The rust language. In Proceedings of the ACM SIGAda Annual Conference on High Integrity Language Technology, New York, NY, USA, 18–21 October 2014; HILT ’14; pp. 103–104. [Google Scholar] [CrossRef] [Scilit]
  45. Rust. A Language Empowering Everyone. Available online: https://www.rust-lang.org/ (accessed on 12 July 2025).
  46. The Swift Programming Language. A General-Purpose Programming Language. Available online: https://www.swift.org/ (accessed on 12 July 2025).
  47. The seL4 Microkernel. Available online: https://sel4.systems/ (accessed on 12 July 2025).
  48. Siapoush, M.S.; Alves-Foss, J. Is Formal Verification of seL4 Adequate to Address the Key Security Challenges of Kernel Design? IEEE Access 2023, 11, 101750–101759. [Google Scholar] [CrossRef] [Scilit]
  49. Stepanov, E.; Serebryany, K. MemorySanitizer: Fast detector of uninitialized memory use in C++. In Proceedings of the International Symposium on Code Generation and Optimization (CGO), San Francisco, CA, USA, 7–11 February 2015; pp. 46–55. [Google Scholar]
  50. Serebryany, K.; Bruening, D.; Potapenko, A.; Vyukov, D. AddressSanitizer: A fast address sanity checker. In Proceedings of the USENIX Annual Technical Conference, Boston, MA, USA, 13–15 June 2012; pp. 309–318. [Google Scholar]
  51. Sasaki, H.; Arroyo, M.A.; Ziad, M.T.I.; Bhat, K.; Sinha, K.; Sethumadhavan, S. Practical byte-granular memory blacklisting using califorms. In Proceedings of the 52nd Annual IEEE/ACM International Symposium on Microarchitecture, Columbus, OH, USA, 12–16 October 2019; pp. 558–571. [Google Scholar]
  52. Nagarakatte, S.; Zhao, J.; Martin, M.M.; Zdancewic, S. SoftBound: Highly compatible and complete spatial memory safety for C. In Proceedings of the 30th ACM SIGPLAN Conference on Programming Language Design and Implementation, Dublin, Ireland, 15–21 June 2009; pp. 245–258. [Google Scholar]
  53. Nethercote, N.; Seward, J. Valgrind: A framework for heavyweight dynamic binary instrumentation. ACM Sigplan Not. 2007, 42, 89–100. [Google Scholar] [CrossRef] [Scilit]
  54. Coverity. Scan Static Analysis. Available online: https://scan.coverity.com/ (accessed on 5 August 2025).
  55. Parmer, G.; West, R. Mutable Protection Domains: Towards a Component-Based System for Dependable and Predictable Computing. In Proceedings of the 28th IEEE International Real-Time Systems Symposium, Tucson, AZ, USA, 3–6 December 2007; pp. 365–378. [Google Scholar] [CrossRef] [Scilit]
  56. Composite, O.S. Scalable Component-Based Operating System. Available online: https://composite.seas.gwu.edu/ (accessed on 5 August 2025).
  57. Harryson, M. Language-Based Permissions in Embedded Systems. Master’s Thesis, Chalmers University of Technology, University of Gothenburg, Göteborg, Sweden, 2020. [Google Scholar]
  58. Wang, X.; Mizuno, M.; Neilsen, M.; Ou, X.; Rajagopalan, S.R.; Boldwin, W.G.; Phillips, B. Secure RTOS Architecture for Building Automation. In Proceedings of the First ACM Workshop on Cyber-Physical Systems-Security and/or PrivaCy, New York, NY, USA, 16 October 2015; CPS-SPC’15; pp. 79–90. [Google Scholar] [CrossRef] [Scilit]
  59. Levy, H.M. Capability-Based Computer Systems; Digital Press: Bethlehem, PA, USA, 2014. [Google Scholar]
  60. Miller, M.S.; Yee, K.P.; Shapiro, J. Capability Myths Demolished. Technical Report, Technical Report SRL2003-02; Johns Hopkins University Systems Research: Baltimore, MD, USA, 2003. [Google Scholar]
  61. Hydra. Hydra: The Kernel of a Multiprocessor Operating System. 1971. Available online: https://homes.cs.washington.edu/~levy/capabook/Chapter6.pdf (accessed on 5 August 2025).
  62. The Fiasco Microkernel. Available online: https://github.com/kernkonzept/fiasco (accessed on 5 August 2025).
  63. Shapiro, J.S.; Smith, J.M.; Farber, D.J. EROS: A fast capability system. In Proceedings of the Seventeenth ACM Symposium on Operating Systems Principles, Charleston, SC, USA, 12–15 December 1999; pp. 170–185. [Google Scholar]
  64. Watson, R.N.; Anderson, J.; Laurie, B.; Kennaway, K. Capsicum: Practical Capabilities for {UNIX}. In Proceedings of the 19th USENIX Security Symposium (USENIX Security 10), Washington, DC, USA, 11–13 August 2010. [Google Scholar]
  65. Watson, R.N.; Woodruff, J.; Neumann, P.G.; Moore, S.W.; Anderson, J.; Chisnall, D.; Dave, N.; Davis, B.; Gudka, K.; Laurie, B.; et al. CHERI: A hybrid capability-system architecture for scalable software compartmentalization. In Proceedings of the Symposium on Security and Privacy, San Jose, CA, USA, 17–21 May 2015; pp. 20–37. [Google Scholar]
  66. Bakir, F.; Krintz, C.; Wolski, R. Caplets: Resource aware, capability-based access control for iot. In Proceedings of the ACM Symposium on Edge Computing (SEC), San Jose, CA, USA, 14–17 December 2021; pp. 106–120. [Google Scholar]
  67. Rasifard, H.; Gopinath, R.; Backes, M.; Nemati, H. SEAL: Capability-based access control for data-analytic scenarios. In Proceedings of the 28th ACM Symposium on Access Control Models and Technologies, Trento, Italy, 7–9 June 2023; pp. 67–78. [Google Scholar]
  68. Mettler, A.; Wagner, D.A.; Close, T. Joe-E: A Security-Oriented Subset of Java. In Proceedings of the NDSS, San Diego, CA, USA, 28 February–3 March 2010; Volume 10, pp. 357–374. [Google Scholar]
  69. Miller, M.S.; Samuel, M.; Laurie, B.; Awad, I.; Stay, M. Safe active content in sanitized JavaScript. Google Inc. Tech. Rep. 2008. Available online: https://google-code-archive-downloads.storage.googleapis.com/v2/code.google.com/google-caja/caja-spec-2008-06-06.pdf (accessed on 5 October 2025).
  70. Ferraro, D.; Bastoni, A.; Zuepke, A.; Marongiu, A. Enabling Security on the Edge: A CHERI Compartmentalized Network Stack. arXiv 2025, arXiv:2507.04818. [Google Scholar] [CrossRef] [Scilit]
  71. Chen, A.U. CHERIoT: A Study in CHERI. RISC-V Blog. 2024. Available online: https://riscv.org/blog/2024/08/cheriot-a-study-in-cheri/ (accessed on 5 August 2025).
  72. Amar, S.; Chisnall, D.; Chen, T.; Filardo, N.W.; Laurie, B.; Liu, K.; Norton, R.; Moore, S.W.; Tao, Y.; Watson, R.N.M.; et al. CHERIoT: Complete Memory Safety for Embedded Devices. In Proceedings of the 56th Annual IEEE/ACM International Symposium on Microarchitecture, Toronto, ON, Canada, 28 October–1 November 2023. [Google Scholar] [CrossRef] [Scilit]
  73. Ling, H.; Huang, H.; Wang, C.; Cai, Y.; Zhang, C. GiantSan: Efficient Operation-Level Memory Sanitization with Segment Folding. ACM Trans. Comput. Syst. 2025, 2, 433–449. [Google Scholar] [CrossRef] [Scilit]
  74. Kim, M.; Park, J.; Cho, G.; Kim, Y.; Orosa, L.; Mutlu, O.; Kim, J. Evanesco: Architectural Support for Efficient Data Sanitization in Modern Flash-Based Storage Systems. In Proceedings of the Twenty-Fifth International Conference on Architectural Support for Programming Languages and Operating Systems, Lausanne, Switzerland, 16–20 March 2020; ASPLOS ’20; pp. 1311–1326. [Google Scholar] [CrossRef] [Scilit]
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content.

Article Metrics

Citations

Article Access Statistics

Multiple requests from the same IP address are counted as one view.