Re: MobileMe Webmail Security — There Is None

‘Prince McLean’, writing for AppleInsider:

Data transaction security in MobileMe’s web apps is based upon authenticated handling of JSON data exchanges between the self contained JavaScript client apps and Apple’s cloud, rather than the SSL web page encryption used by HTTPS. The only real web pages MobileMe exchanges with the server are the HTML, JavaScript, and CSS files that make up the application, which have no need for SSL encryption following the initial user authentication. This has caused some unnecessary panic among web users who have equated their browser’s SSL lock icon with web security. And of course, Internet email is not a secured medium anyway once it leaves your server.
If Apple applied SSL encryption in the browser, it would only slow down every data exchange without really improving security, and instead only provide pundits with a false sense of security that distracts from real security threats.

It’s pretty clear to me from this description that (a) McLean doesn’t know much about data security or HTTP, and (b) the system he’s describing would be patently insecure. And unfortunately, the actual system is just as insecure as I was afraid it was.

The most glaring problem is that, since the main page resources (HTML and JavaScript) aren’t loaded over SSL, there’s no way to tell whether they’re genuine. By now everyone ought to be aware of DNS forgery attacks ; if the coffeeshop where you’ve gone online has an infected WiFi router, it would be nice to know whether its DNS record for “me.com” points to Apple’s servers or to a phishing site. But without SSL there’s no way to tell. Obviously, if you’ve loaded a hacked forgery of me.com’s web-app, any assurances made about “authenticated handling of JSON exchanges” are completely pointless, because your JSON exchanges are probably going straight to a pwned server in Uzbekistan.

(You may object that the initial login page is SSL-protected. It is, but unfortunately it’s at a completely different domain, auth.apple.com. A DNS attack on MobileMe would operate by leaving auth.apple.com alone, so you’d be handed off to the fake server after logging in.)

After writing the above, I got curious enough to dissect the traffic myself. So I used HTTPScoop to sniff while I viewed a couple of emails. Not only is there no SSL authentication, but the requests and responses aren’t even encrypted at all. I could easily read the plaintext of the email messages right in HTTPScoop, which means anyone else on my LAN (or any admin at my ISP or workplace) could easily have read them too. Oops.

The takeaway from this is that MobileMe’s web apps (at least email) are quite insecure — they won’t protect you against DNS forgery or phishing attacks, and they leave your email traffic wide open for others to read. I would avoid them if at all possible and access your MobileMe content via good old SSL in real desktop mail and calendar clients (such as Mail.app and iCal), rather than blindly trusting Apple’s pretty-looking web apps.

(You may raise a second objection, that most email traffic is sent across the Internet unencrypted anyway. But even with unencrypted email, it is much, much easier to eavesdrop on (or alter) traffic over a LAN, especially wireless, than it is to intercept Internet backbone traffic between ISPs. It’s the difference between attacking weak, easily accessible infrastructure plugged in by some baristas with little computer experience, vs. hacking into large commercial routers secured in data centers and run by experts.)

[Disclaimer: I am not a security guru. But I’ve spent quite a bit of time over the past year studying data security and cryptography, and implementing some of the techniques; and honestly, it doesn’t take a Bruce Schneier to simply run a packet sniffer and notice plaintext email traffic.]

Previously: Beautiful snej soup, yum
Next Post: Career update