mirror of
https://github.com/JGoyd/iOS18.6.2-Persistent-Automation-Exploit-in-Siri-Shortcuts-and-Apple-SWC.git
synced 2026-02-12 21:32:48 +00:00
201 lines
6.9 KiB
Plaintext
201 lines
6.9 KiB
Plaintext
# Improper Input Validation in Siri Shortcuts and Shared Web Credentials Enables Persistent Background Execution, Retry Storms, and Sandbox Extension Abuse
|
||
|
||
**Date Discovered:** August 20, 2025
|
||
**Discovered By:** Joseph Goydish II
|
||
|
||
---
|
||
|
||
### Detection Context
|
||
|
||
* **Device:** iPhone 14 pro max
|
||
* **OS Version:** iOS 18.6.2
|
||
* **State:** Live, in-field (production environment)
|
||
* **Exploitation Status:** Proven, persistent, reproducible
|
||
* **Severity:** High
|
||
* **Proposed CVSS v4.0 Base Score:** 7.4 (High)
|
||
|
||
---
|
||
|
||
### Executive Summary
|
||
|
||
A vulnerability chain exists within Siri Shortcuts automation and the Shared Web Credentials (SWC) framework that enables malformed payloads to persistently execute in the background without validation or proper sandbox containment.
|
||
|
||
Tested under real-world conditions, this vulnerability leads to:
|
||
|
||
* Silent background execution of malformed workflows
|
||
* Unauthorized sandbox extension requests by system daemons
|
||
* Excessive retry storms (71+ attempts) in `swcd`
|
||
* TLS trust degradation (certificate mismatches ignored)
|
||
* Workflow persistence across device reboot and application relaunch
|
||
|
||
These behaviors subvert Apple’s automation and trust enforcement models, introducing risks of denial of service, degraded credential validation, and stealthy persistence mechanisms.
|
||
|
||
---
|
||
|
||
### Affected Components
|
||
|
||
| Component | Description |
|
||
| ------------------------ | ---------------------------------------------------------- |
|
||
| com.apple.Shortcuts | Accepts malformed payloads and executes them |
|
||
| BackgroundShortcutRunner | Executes workflows silently in the background |
|
||
| com.apple.siriknowledged | Issues sandbox extension requests from malformed workflows |
|
||
| com.apple.swcd | Retries malformed JSON; tolerates TLS errors |
|
||
| searchd, symptomsd | Invoked without entitlement via chained payloads |
|
||
| iOS/macOS | All versions supporting Siri Shortcuts + SWC |
|
||
|
||
---
|
||
|
||
### CWE Classification
|
||
|
||
* CWE-20: Improper Input Validation
|
||
* CWE-184: Incomplete List of Disallowed Inputs
|
||
* CWE-307: Improper Restriction of Excessive Authentication Attempts
|
||
* CWE-284: Improper Access Control
|
||
|
||
---
|
||
|
||
### Vulnerability Details
|
||
|
||
**Issue:** Siri Shortcuts accepts malformed payloads containing null fields (e.g., `WFLinkEntityContentItem.title = null`) and executes workflows without rejection.
|
||
|
||
#### 1. Improper Shortcut Parsing
|
||
|
||
* Payload accepted despite missing required fields
|
||
* Log:
|
||
|
||
```
|
||
Ignoring entity property '<private>' because it doesn't have a title.
|
||
```
|
||
|
||
#### 2. Silent Background Execution
|
||
|
||
* Triggered without alert via `BackgroundShortcutRunner`
|
||
|
||
#### 3. Retry Storms in `swcd`
|
||
|
||
* Malformed JSON triggers 71 retry attempts
|
||
* TLS errors logged but ignored
|
||
|
||
```
|
||
SWCERR00401 Bad JSON content -- {"cause":"invalid character '<'"}
|
||
SWCERR00303 TLS error -- certificate mismatch
|
||
```
|
||
|
||
#### 4. Sandbox Extension Requests
|
||
|
||
* Daemons request entitlements for malformed workflows
|
||
* Requests continue despite denial
|
||
|
||
#### 5. Persistence
|
||
|
||
* Workflows re-trigger on reboot or app relaunch
|
||
* Stored in `/var/mobile/Library/Shortcuts/`
|
||
|
||
---
|
||
|
||
### Delivery Vectors
|
||
|
||
* Injected via iCloud Shortcut sync or MobileDevice API
|
||
* Stored at `/var/mobile/Library/Shortcuts/`
|
||
* Automatically triggered by automation profiles
|
||
|
||
---
|
||
|
||
### Live System Proof
|
||
|
||
**Tested Environment:** iPhone 14 / iOS 18.6.2
|
||
|
||
**Observed Logs:**
|
||
|
||
```
|
||
[BackgroundShortcutRunner] Ignoring entity property '<private>' because it doesn't have a title.
|
||
[swcd] SWCERR00401 Bad JSON content -- {"cause":"invalid character '<'"}
|
||
[swcd] SWCERR00303 TLS error -- certificate mismatch
|
||
Retries: 71
|
||
```
|
||
|
||
**Result:**
|
||
Execution persisted despite malformed input. TLS mismatch was tolerated. No user interaction required post-setup.
|
||
|
||
---
|
||
|
||
### Artifact Snapshot (swcutil --show)
|
||
|
||
```
|
||
Service: webcredentials
|
||
App ID: com.apple.PassbookUIService
|
||
Domain: wallet.apple.com
|
||
Error: SWCERR00401 Bad JSON content -- {"cause":"invalid character '<'"}
|
||
Retries: 71
|
||
SWCERR00303 TLS error -- x509: certificate is valid for apple-shield.apple.com, not concierge.apple.com
|
||
```
|
||
|
||
---
|
||
|
||
### Root Cause Chain
|
||
|
||
| Layer | Fault Description |
|
||
| -------------------------- | ------------------------------------------------- |
|
||
| Siri Shortcuts Engine | Accepts malformed payloads with null content |
|
||
| Workflow Execution Handler | Executes workflows despite parsing errors |
|
||
| SWC Fetch Logic (`swcd`) | Retries malformed JSON up to 71 times |
|
||
| TLS Certificate Validation | Ignores mismatch and continues execution |
|
||
| Sandbox Enforcement | Processes entitlement requests without validation |
|
||
| Automation Framework | Allows persistence without runtime validation |
|
||
|
||
---
|
||
|
||
### CVSS v4.0 Scoring
|
||
|
||
* **Attack Vector:** Local
|
||
* **Attack Complexity:** Low
|
||
* **Privileges Required:** Low
|
||
* **User Interaction:** Required
|
||
* **Scope:** Changed
|
||
* **Confidentiality:** Low
|
||
* **Integrity:** Medium
|
||
* **Availability:** High
|
||
* **Base Score:** 7.4 (High)
|
||
* **Environmental Score:** Up to 8.1 (context-dependent)
|
||
|
||
---
|
||
|
||
### Impact Summary
|
||
|
||
| Impact Type | Description |
|
||
| -------------------- | --------------------------------------------------------- |
|
||
| Denial of Service | Retry storms from malformed SWC inputs |
|
||
| Background Execution | Persistent execution of workflows at system events |
|
||
| Entitlement Bypass | Daemon requests proceed without proper sandbox validation |
|
||
| Trust Degradation | TLS mismatches tolerated |
|
||
| Persistence | Automations survive reboot and app relaunch |
|
||
|
||
---
|
||
|
||
### Suggested Remediations
|
||
|
||
| Component | Recommendation |
|
||
| --------------------- | ----------------------------------------------------------- |
|
||
| Siri Shortcuts Engine | Reject malformed `WFLinkEntityContentItem` inputs |
|
||
| SWC Retry Logic | Limit retries to three maximum |
|
||
| TLS Trust Chain | Enforce strict pinning; abort on mismatch |
|
||
| Automation Framework | Require runtime permissions for network-enabled automations |
|
||
| System Logging | Detect anomalous retry patterns (>10 in 60 seconds) |
|
||
|
||
---
|
||
|
||
### Reproducibility & Coordination
|
||
|
||
The researcher can provide:
|
||
|
||
* Full technical report (this document)
|
||
* `swcutil` verification steps
|
||
* Timestamped system logs (redacted)
|
||
* Live trace video (available upon request)
|
||
|
||
---
|
||
|
||
### Conclusion
|
||
|
||
This vulnerability chain exposes systemic flaws in Siri Shortcuts and Shared Web Credentials. It allows silent background execution, degraded trust enforcement, and persistent post-exploitation workflows in core Apple frameworks. The issue has been reproduced under live, production conditions and should be triaged and remediated as a high-priority issue.
|