PoC Archive PoC Archive
High CVE-2026-28995 patched

iOS App Intents Path Traversal — CVE-2026-28995

by Robertmak2014-sudow · 2026-07-05

Severity
High
CVE
CVE-2026-28995
Category
misc
Affected product
Apple App Intents framework (iOS)
Affected versions
iOS 26.4.2 and below (patched in iOS 26.5, May 11 2026)
Disclosed
2026-07-05
Patch status
patched

Metadata

FieldValue
Date Added2026-07-05
Last Updated2026-07
Author / ResearcherRobertmak2014-sudow
CVE / AdvisoryCVE-2026-28995
Categorymisc
SeverityHigh
CVSS ScoreNot specified in source
StatusPoC
Tagsios, app-intents, path-traversal, sandbox-escape, swift, file-disclosure, mobile
RelatedN/A

Affected Target

FieldValue
Software / SystemApple App Intents framework (iOS)
Versions AffectediOS 26.4.2 and below (patched in iOS 26.5, May 11 2026)
Language / PlatformSwift, iOS app / App Intents framework
Authentication RequiredLocal-only (requires the malicious app to be installed and its intent invoked)
Network Access RequiredNo

Summary

Apple’s App Intents framework insufficiently validates file paths supplied to an intent’s handler, allowing a malicious app to read arbitrary files outside its normal app sandbox. The PoC defines an AppIntent whose readCve(path:) function prepends a long directory-traversal prefix (../../../../../../../../../../../../../) to an attacker-supplied path and passes the resolved path directly to FileManager file/directory reads, with no sandbox boundary enforcement. Invoking the intent with a path like /etc/passwd or a preferences plist under /var/mobile/Library/Preferences/ returns the file’s contents (or a directory listing) to the calling app. An accompanying SwiftUI example app demonstrates triggering the read from a simple text field and button.


Vulnerability Details

Root Cause

Insufficient path validation/sandboxing in Apple’s App Intents framework lets an intent handler resolve and read file paths outside the app’s designated sandbox container when a caller supplies a traversal sequence (../).

Attack Vector

  1. Ship or side-load an iOS app that registers the PoC AppIntent (CVE_2026_28995).
  2. Invoke the intent’s readCve(path:) with a relative path such as ../../../../../../../../../../../../../etc/passwd.
  3. The framework resolves the path outside the app sandbox and returns file contents or a directory listing to the calling app, with no additional authorization.

Impact

A malicious or compromised third-party app can read arbitrary files accessible to the App Intents process (system config files, preference plists, and potentially other apps’ data), leading to sensitive information disclosure on affected iOS versions.


Environment / Lab Setup

Target:   iOS 26.4.2 or earlier device/simulator, App Intents framework
Attacker: Xcode project embedding CVE-2026-28995.swift, run on target iOS version

Proof of Concept

PoC Script

See CVE-2026-28995.swift and Example.swift in this folder.

1
2
3
let intent = CVE_2026_28995()
let content = intent.readCve(path: "../../../../../../../../../../../../../etc/passwd")
print(content)

Building the intent into an Xcode project and calling readCve(path:) (directly, or via the bundled SwiftUI Example.swift demo UI) reads and prints the contents of files outside the app’s sandbox, or lists directory contents if the path resolves to a folder.


Detection & Indicators of Compromise

Signs of compromise:

  • A third-party app requesting or logging content from system paths (/etc/passwd, /var/mobile/Library/Preferences/*) it has no legitimate reason to access.
  • Crash/telemetry logs showing App Intents extensions receiving paths containing ../ sequences.

Remediation

ActionDetail
Primary fixUpdate to iOS 26.5 or later, which patches the App Intents path validation.
Interim mitigationAvoid installing untrusted apps that register custom App Intents until updated; MDM policies restricting third-party app installation on affected OS versions.

References


Notes

Mirrored from https://github.com/Robertmak2014-sudow/CVE-2026-28995 on 2026-07-05.