Some of you may know Koushik Dutta, he's the guy behind ClockworkMod recovery, ROM Manager and Carbon Backup. Yeah he's pretty popular in the Android community. He's now decided to work on a new project that is pretty important to the Android community, and that's Superuser and root access control. His new app is called ClockworkMod Superuser and is currently in beta and will be headed to the Play Store soon. But we already have SuperSU and SuperUser, why do we need ClockworkMod Superuser? Let's take a moment and explain what's different about it.
There are several important differences between Superuse, SuperSU and ClockworkMod Superuser, the biggest difference being that ClockworkMod Superuser is open source and free. His code is available on his Github repo for you to check out for yourself. Which means just about anyone who wants to examine the code for potential vulnerabilities can do so and then disclose them to the author, in this case Koush. Which is always a good thing, especially after those vulnerabilities on recent Samsung devices.
Superuser is still quite young and still in beta but does seem to be steps ahead of other superuser apps. It already has support for Android 4.2's multi-user feature. This multi-user feature is currently only available on tablets such as the Nexus 7 and Nexus 10. Which is something that is still missing from the original Superuser, and was just added to SuperSU which was updated over the weekend. As we learned with Carbon, Koush is a pretty fast developer, so we can expect changes coming to his version of Superuser pretty quickly. Our friends over at Android Police have spoken with Koush, and he told them that there would not be a paid or premium version of this app. In the past Koush has been criticized heavily for charging for extra features, like touch ClockworkMod. In addition, Koush has said that ClockworkMod Superuser will eventually ship with ROMs like CyanogenMod, which would be all kinds of awesome sauce.
Another thing that Superuser is doing is utilizing the native Android permissions system for declaring a special android.permission.ACCESS_SUPERUSER permission. This is basically informational and wouldn't introduce a whole lot more transparency into if the app gets root permission or not. Here's the thinking process behind it, as outlined by Koush on a Google+ post:
Android has a way for apps to create and request various permissions via the AndroidManifest.xml file. This is how the list of permissions and features shown in an app's Google Play description is generated. Superuser should definitely be listed there. But currently, no such permission exists to be enforced, which is a terrible precedent:
You can download an app, and without your prior knowledge it can request Superuser access.
After talking with +Ricardo Cerqueira about this, we've decided on a strategy to ramp up and start enforcing this good practice.
0) Add a new permission with the Superuser, "android.permission.ACCESS_SUPERUSER".
1) The new Superuser will simply warn that the developer is not declaring "android.permission.ACCESS_SUPERUSER" in the manifest. (as seen below)
2) Add an option to Superuser to automatically deny Superuser access to apps that do not have this declared.
3) After 6 months, this option is enabled by default.
4) After 1 year, this is no longer optional (always on).
This is an insanely trivial change for an app to make, and will assist with the transparency of root apps on the market. So there's really no excuse for the developer not to do it!
Koush also has another post where he explains why he created Superuser:
Some of you are probably wondering why I'm rewriting Superuser.
Superuser should be open source. It's the gateway to root on your device. It must be open for independent security analysis. Obscurity (closed source) is not security.
Superuser should be NDK buildable. No internal Android references.
Superuser should also be AOSP buildable for those that want to embed it in their ROM.
Maintenance and updates on both the market and source repositories should be timely.
I want to be able to point users of my app to a Superuser solution that I wrote, that I know works, and that I can fix if something is wrong. Yes, this is selfish: Carbon does not work with some versions of Chainsdd's Superuser. SuperSU works great, but I am not comfortable pointing a user to a closed source su implementation.
Handle multiuser (4.2+) properly
Handle concurrent su requests properly
So what is in this Superuser app? Quite a bit actually including:
- Multiuser Support
- Open Source
- Leverages Android's permission model
- logging, as well as per app logging
- pretty UI (holo)
- PIN Protection
- Request Timeout
- Customize notifications
- x86 and ARM support
- Handle concurren su requests properly
- NDK clean
At this time, you can install superuser rom ROM Manager's ClockworkMod section, or flash it manually if you're using a different recovery like TWRP. After beta is done, it'll be available on the Play Store and we'll be sure to keep you up to date on when that happens.