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
Archive entry
intelseclab/poc-archiveMetadata
| Field | Value |
|---|---|
| Date Added | 2026-07-05 |
| Last Updated | 2026-07 |
| Author / Researcher | Robertmak2014-sudow |
| CVE / Advisory | CVE-2026-28995 |
| Category | misc |
| Severity | High |
| CVSS Score | Not specified in source |
| Status | PoC |
| Tags | ios, app-intents, path-traversal, sandbox-escape, swift, file-disclosure, mobile |
| Related | N/A |
Affected Target
| Field | Value |
|---|---|
| Software / System | Apple App Intents framework (iOS) |
| Versions Affected | iOS 26.4.2 and below (patched in iOS 26.5, May 11 2026) |
| Language / Platform | Swift, iOS app / App Intents framework |
| Authentication Required | Local-only (requires the malicious app to be installed and its intent invoked) |
| Network Access Required | No |
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
- Ship or side-load an iOS app that registers the PoC
AppIntent(CVE_2026_28995). - Invoke the intent’s
readCve(path:)with a relative path such as../../../../../../../../../../../../../etc/passwd. - 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.swiftandExample.swiftin this folder.
| |
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
| Action | Detail |
|---|---|
| Primary fix | Update to iOS 26.5 or later, which patches the App Intents path validation. |
| Interim mitigation | Avoid 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.