Fooling the AppStore one code-chunk at a time
Jekyll on iOS suggests tests inadequate
A group of researchers presenting at Usenix last week turned up a startling new way to sneak malicious apps through the AppStore and onto iOS devices. By spreading malicious chunks of code through an apparently-innocuous app for activation later, the researchers say they were able to evade Apple's test regime.
The Georgia Tech-led team's aim, described in this paper, was to create code that could be rearranged after it had passed AppStore's tests. That way, the code would look innocuous running in the test environment, be approved and signed, and would later be turned into a malicious app.
For their proof-of-concept, the researchers created an app that operated as a Georgia Tech “news” feed. They explain that the malicious code was distributed throughout the app as “code gadgets” that were idle until the app received the instruction to rearrange them. “After the app passes the App Review and lands on the end user device, the attacker can remotely exploit the planted vulnerabilities and assemble the malicious logic at runtime by chaining the code gadgets together”, they write.
The instructions for reassembly of the app arrive through a phone-home after the app is installed.
The researchers continue that “despite running inside the iOS sandbox, [the] Jekyll app can successfully perform many malicious tasks, such as stealthily posting tweets, taking photos, stealing device identity information, sending email and SMS, attacking other apps, and even exploiting kernel vulnerabilities.”
Long Lu, a Stony Brook University researcher who took part in the project, explained to Technology Review that the exploit exists because apps only run in the Apple test suite “for a few seconds”.
“The message we want to deliver is that right now, the Apple review process is mostly doing a static analysis of the app, which we say is not sufficient because dynamically generated logic cannot be very easily seen,” Lu told Technology Review. ®