# A single Darwin notification exposed an iPhone denial-of-service path

Event date: 2025-04-27

A security write-up by researcher Gui Rambo says a legacy Apple messaging mechanism that many developers never use directly could be turned into a device-level denial-of-service path on iPhone, including one triggered by a single line of code.

Rambo’s account centers on Darwin notifications, a CoreOS-level API used for simple message exchange between processes on Apple platforms. Unlike `NSNotificationCenter`, which stays within one process, Darwin notifications can be posted and observed across processes. Rambo notes that sandboxed apps can both register for and send these notifications without special entitlements, which makes the API useful for legitimate system coordination but also raises the possibility of abuse.

That possibility is what he set out to test. According to the post, he looked through an early iOS 18 beta root filesystem for processes that used `notify_register_dispatch` and `notify_check`, then built a test app called EvilNotify to see whether any notification-driven system behavior could be forced from inside an app sandbox. He says the answer was yes.

The most severe behavior he describes came from a notification that sent SpringBoard into a “Restore in Progress” state. In Rambo’s telling, the notification is normally associated with restoring a device from a local backup through a connected computer, but any process could post it. The result was a system-wide interruption that could not be cleared by simply force-quitting the app that triggered it. The device would eventually time out because no restore was actually taking place, after which the user would have to tap a Restart button, causing the device to reboot.

Rambo says the exploit was notable not just because it affected the whole system, but because the trigger was so small: a single line of code was enough to make the device enter the restore state. He also says SpringBoard was the component observing the notification and presenting the UI.

The post goes on to describe an attempt to make the effect repeat across reboots. Because iOS apps have limited background execution, Rambo explored whether an app extension could re-post the notification after restart. He chose a widget extension, writing a second app called VeryEvilNotify. Widgets are periodically executed by the system for placeholders, snapshots and timelines, and he says that made them a plausible vehicle for getting code run again soon after installation or reboot.

According to the write-up, widget extensions provided another path to execute the same notification-based logic. The post does not claim a confirmed permanent brick, but it does describe a sequence that could repeatedly force the device back into the unwanted restore flow and require manual intervention.

The broader point of the article is narrower than the headline may suggest: Apple’s public process-to-process notification system is meant for benign coordination, but the same design can create a denial-of-service surface when powerful system behaviors listen to messages that any sandboxed process can emit. Rambo frames the finding as a demonstration of how a little-known legacy API can still have outsized consequences in modern iOS software.

For developers, the report is a reminder that cross-process signaling is not just an implementation detail. If a public notification can trigger a privileged or user-disruptive workflow, any app that can post that notification becomes part of the threat model. Rambo’s account shows that the risk is not hypothetical when the notification is tied to system UI and a reboot path.

Apple had not been described in the post as issuing a public response, and the write-up is presented as a researcher’s technical disclosure rather than a confirmed patch announcement. The key takeaway is the same either way: a single legacy notification can be enough to steer iPhone into a state the user did not ask for.