/

CVE-2026-109587

Severity:

HIGH RISK

(8.8)

Incorrect Authorization (CWE-863) in FreeRTOS MPU Port

CVE-2026-109587

Awaiting Analysis

Vulnerability type

Category:

Incorrect Authorization

CWE:

CWE-863

Impact:

Unauthorized privileged memory access and potential privilege escalation

Severity:

HIGH RISK

(8.8)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

An incorrect authorization vulnerability in the Arm Cortex-R82 MPU port for FreeRTOS-Kernel may allow an unprivileged task to read or modify privileged kernel memory.

The issue becomes risky on MPU-enabled builds when attacker-controlled or insufficiently validated buffer arguments are passed to an MPU system call.

An incorrect authorization vulnerability in the Arm Cortex-R82 MPU port for FreeRTOS-Kernel may allow an unprivileged task to read or modify privileged kernel memory.

The issue becomes risky on MPU-enabled builds when attacker-controlled or insufficiently validated buffer arguments are passed to an MPU system call.

Affected context

This vulnerability affects FreeRTOS-Kernel deployments using the Arm Cortex-R82, Armv8-R AArch64 MPU port on MPU-enabled builds. It occurs when an unprivileged task can invoke an MPU system call with a buffer argument that is not adequately checked against the task's permitted memory regions.

This vulnerability affects FreeRTOS-Kernel deployments using the Arm Cortex-R82, Armv8-R AArch64 MPU port on MPU-enabled builds. It occurs when an unprivileged task can invoke an MPU system call with a buffer argument that is not adequately checked against the task's permitted memory regions.

Exploit preconditions

  • Attack surface: MPU system-call interfaces exposed to application tasks
  • Required access: Execution as an unprivileged task within the affected FreeRTOS environment
  • Trigger point: Passing a buffer argument to an MPU system call
  • Why exploitation is possible: Authorization and memory-region validation may fail to ensure that the buffer remains within regions assigned to the calling task
  • Attack surface: MPU system-call interfaces exposed to application tasks
  • Required access: Execution as an unprivileged task within the affected FreeRTOS environment
  • Trigger point: Passing a buffer argument to an MPU system call
  • Why exploitation is possible: Authorization and memory-region validation may fail to ensure that the buffer remains within regions assigned to the calling task

Why this happens

The underlying bug is an authorization failure in memory-access enforcement. The MPU system-call path does not sufficiently constrain a buffer supplied by an unprivileged task to the task's authorized memory regions.

This maps to CWE-863: Incorrect Authorization, because the system permits an operation on protected resources without correctly verifying whether the requesting task has the required authority.

The underlying bug is an authorization failure in memory-access enforcement. The MPU system-call path does not sufficiently constrain a buffer supplied by an unprivileged task to the task's authorized memory regions.

This maps to CWE-863: Incorrect Authorization, because the system permits an operation on protected resources without correctly verifying whether the requesting task has the required authority.

Potential impact

  • An unprivileged task may read privileged kernel memory
  • An unprivileged task may modify kernel memory or control data
  • The vulnerability could enable privilege escalation within the device
  • System integrity, isolation boundaries, or sensitive data may be compromised
  • An attacker could cause denial of service or alter security-critical runtime behavior
  • An unprivileged task may read privileged kernel memory
  • An unprivileged task may modify kernel memory or control data
  • The vulnerability could enable privilege escalation within the device
  • System integrity, isolation boundaries, or sensitive data may be compromised
  • An attacker could cause denial of service or alter security-critical runtime behavior

General mitigation guidance

Mitigation focuses on enforcing authorization at every MPU system-call boundary and ensuring that memory references are validated against the calling task's effective permissions.

Common defensive patterns include:

  • Use secure, vendor-supported maintenance releases that contain the relevant correction
  • Validate buffer addresses, lengths, and access directions before privileged operations
  • Verify that complete buffers remain within regions authorized for the calling task
  • Avoid trusting caller-supplied pointers or metadata as proof of authorization
  • Minimize the privileges and memory visibility granted to application tasks
  • Apply defense-in-depth checks in both system-call wrappers and privileged kernel handlers

Mitigation focuses on enforcing authorization at every MPU system-call boundary and ensuring that memory references are validated against the calling task's effective permissions.

Common defensive patterns include:

  • Use secure, vendor-supported maintenance releases that contain the relevant correction
  • Validate buffer addresses, lengths, and access directions before privileged operations
  • Verify that complete buffers remain within regions authorized for the calling task
  • Avoid trusting caller-supplied pointers or metadata as proof of authorization
  • Minimize the privileges and memory visibility granted to application tasks
  • Apply defense-in-depth checks in both system-call wrappers and privileged kernel handlers

How teams detect issues like this

Organizations can detect related authorization flaws through:

  • Static analysis rules for unchecked pointer, length, and region arguments in privileged interfaces
  • Code review checks for MPU system calls that validate only buffer starts or omit overflow handling
  • Unit and integration tests using boundary, cross-region, and privileged-address inputs
  • Policy enforcement requiring explicit authorization checks for every task-to-kernel memory operation
  • Runtime monitoring for unexpected unprivileged accesses to kernel-owned memory

Automated security review tools may help identify missing authorization checks and unsafe memory-range validation.

Organizations can detect related authorization flaws through:

  • Static analysis rules for unchecked pointer, length, and region arguments in privileged interfaces
  • Code review checks for MPU system calls that validate only buffer starts or omit overflow handling
  • Unit and integration tests using boundary, cross-region, and privileged-address inputs
  • Policy enforcement requiring explicit authorization checks for every task-to-kernel memory operation
  • Runtime monitoring for unexpected unprivileged accesses to kernel-owned memory

Automated security review tools may help identify missing authorization checks and unsafe memory-range validation.

Sources

SourceLink
aws.amazon.comaws.amazon.com/security/security-bulletins/2026-138-aws/
github.comgithub.com/FreeRTOS/FreeRTOS-Kernel/releases/tag/V11.3.2
github.comgithub.com/FreeRTOS/FreeRTOS-Kernel/security/advisories/GHSA-pv9j-rq42-3fjc

Frequently asked

questions

Exploitation is generally local to the affected device or embedded runtime. It requires code execution as an unprivileged task rather than a network connection alone.

An attacker must be able to run or influence an unprivileged task on an MPU-enabled system using the affected Arm Cortex-R82 port.

Use a security-maintained implementation that correctly validates buffer addresses, lengths, and access permissions before performing privileged memory operations.

Enforce least privilege, treat all task-supplied pointers as untrusted, validate complete memory ranges, and test system-call authorization at region boundaries.

Exploitation is generally local to the affected device or embedded runtime. It requires code execution as an unprivileged task rather than a network connection alone.

An attacker must be able to run or influence an unprivileged task on an MPU-enabled system using the affected Arm Cortex-R82 port.

Use a security-maintained implementation that correctly validates buffer addresses, lengths, and access permissions before performing privileged memory operations.

Enforce least privilege, treat all task-supplied pointers as untrusted, validate complete memory ranges, and test system-call authorization at region boundaries.

Find out what's already
exploitable in your codebase.