Latest Google Chromecast OTA Blocks Root Method
Five days ago, we covered a rather useful discovery by the fine folks over at GTV Hacker, where due to a rather convenient oversight in the device’s cryptography pathway, a to-be-flashed firmware’s return code was never checked after passing through the device’s image verification software. In other words, this meant that you could run your own firmware at will, and all you needed was a USB key, the appropriate firmware, and a powered USB OTG cable.
At the time of the previous article, I noted the very real possibility that a future OTA would likely break this root method. Unfortunately, it appears as if that day has (rather expediently) come with OTA build 12840. Given that the original security hole is one so basic as to lead us to believe that it was left in place intentionally, we can only assume that other forces such as content providers or potential partners are at play. After all, root access could in their minds potentially open the door to pirated content. However, at this time, that is nothing more than speculation by one rather paranoid editor.
What can (or should) you do about it? At the moment, it appears as if there’s not much to do. OTA updates are applied to the device automatically, without any user intervention. XDA Forum Member tchebb has created an information thread detailing the issue, along with citing the changes made to /bootloader/bootloader.c in the Chromecast source code that are responsible for the root method closure.
In addition to sharing the bad news, tchebb’s thread also includes two methods that could theoretically prevent the OTA from being applied. One method involves attempting to remove the OTA signing keys on the device, whereas the other replaces the device’s update_engine with an empty executable script. As explained by tchebb himself:
THE FOLLOWING METHODS ARE UNTESTED AND ARE NOT GUARANTEED TO WORK OR LEAVE YOUR CHROMECAST IN A WORKING STATE. PERFORM THEM AT YOUR OWN RISK.
After telnetting into your rooted Chromecast or otherwise obtaining a root shell, you can try these two possible methods
- Rename otacerts.zip to otacerts.zip.bak in /system/etc/security/. This may remove the OTA signing keys and cause the Chromecast to reject any OTAs. However, I do not know whether this file is actually used or whether is simply a remnant from Chromecast’s Android base.
- Replace /chrome/update_engine with an empty, executable, shell script (make sure to make a backup copy first). I am very unsure of this method, since it is simply going off the name of the update_engine binary. If update_engine happens to perform some task core to the system, doing this will leave your device in an unusable state. If this happens, simply re-rooting using GTVHacker’s USB image should restore your system to how it was.
However, there is a large inherent risk with applying either, and bricked devices are highly likely. Because of that, we don’t recommend that anyone, except perhaps hardware hackers named Adam and others like him, attempt this.
[Many thanks to all who sent this one in!]