Credit: Possible Mobile
Nick Arnott couldn't figure out recently why Apple kept rejecting an update to a mobile app his company developed.
It turned out the problem was a ghost in the machine.
His company, Possible Mobile, is well versed in the App Store submission rules and has built apps for JetBlue, Better Homes & Gardens and the Major Soccer League.
The rejection came after it was discovered in mid-September that thousands of apps in the App Store had been built with a counterfeit version of an Apple development tool, Xcode.
The fake version, dubbed XcodeGhost and probably developed in China, had been downloaded by many developers from third-party sources, apparently because getting the 4GB code from Apple took too long.
Apple's Xcode tool is used for building applications for the company's devices. Screenshot/Apple
Security researchers found that apps with XcodeGhost posed a privacy risk, as the apps could easily be configured to record data from people's devices and send it to a remote server.
The entry of more than 4,000 XcodeGhost-infected apps into the App Store marked one of the most successful breaches of Apple's stringent security checks, threatening to undermine the company's years-long efforts to keep the store free of malware.
After its app was rejected, Possible Mobile set out to find out why and detailed its efforts in a blog post.
Apple had indicated it had something to do with XcodeGhost. But Arnott and his team were stumped: The version of Xcode they were using was the legitimate one. They reinstalled fresh versions of Xcode on several machines, but Apple still rejected the app.
Making a mobile app is a bit like making sausage: A lot of code frameworks and libraries developed by other companies are used for functions like ad serving and video delivery.
Those frameworks often come as binaries, and developers have no visibility into what is actually in the source code, said Jay Graves, Possible Mobile's CTO, in a phone interview.
"Any of the top apps from top brands on the App Store are going to have something from a third party," Graves said.
Trying to figure out what is in a binary is what security researchers do, not app developers, Graves said. After scratching their heads, they guessed that the problem was probably in a third-party framework.
The framework had been compiled with a tainted Xcode version, and that code was subsequently incorporated into the app by Possible Mobile. After being alerted, the company that developed the framework fixed the problem and delivered a clean version, Graves said.
Sign up for CIO Asia eNewsletters.