2

Background

The Windows 10 update model

Windows 10 is used mainly on PCs.

Microsoft sells Windows 10 licenses. You buy a license, and then you can install Windows 10 on your PC. Then you can get security updates directly from Microsoft. Microsoft promises that they will continue to provide security updates for Windows 10 for one decade after it was first released.

Windows 10 includes so many drivers that it works on many PC models.

The Android update model

Android is used on cellphones, tablets, and other devices. Tablets have no moving parts, so they can last longer than laptops.

Google distributes Android to tablet makers. Tablet makers create tablets. They combine Android with a set of drivers to create a firmware image custom-made for a particular tablet model. They then install this firmware image onto the tablet model. Finally, they sell the tablet model to individuals and corporations.

Each Android firmware image includes enough drivers to work on the tablet model it was designed for. Experts advise that you shouldn't bother trying to install it on any other tablet model.

The problem with the Android update model

You can't get a universal Android firmware image from Google. Instead, you have to wait for your tablet manufacturer to add drivers to it, in order so that it will work on your tablet model. And your tablet manufacturer might never do so.

The problem

Numerous tablet users are running old insecure Android versions, and they're running these Android versions on devices which the tablet manufacturer has stopped supporting. Therefore, there's no easy way for the users to install patches which fix the vulnerabilities.

My question

Why doesn't Google distribute Android firmware images with lots of included drivers, which will work on lots of Android devices? Google could include the latest security fixes in these firmware images. If Google did this, maybe there would be fewer vulnerable Android devices out there.

  • 2
    Is this an InfoSec question? – Alexander O'Mara Aug 23 '16 at 1:04
  • @AlexanderO'Mara: Well, it's indirectly security-related. It suggests an idea which Google might be able to try in order to make Android more secure, and then asks why Google doesn't implement this idea. Yet I don't think it would be a good fit for Android.SE, which IIRC is for tech support only. Also, I don't think the question makes Security.SE a less-fun place to visit. Finally, I think it could be interesting and educational for some of our readers. – unforgettableid Aug 23 '16 at 1:47
6

Why doesn't Google distribute Android firmware images with lots of included drivers, ...

This means that Google would need to get access to the drivers in the first place and not only by binary but also by source. Only this way they could keep the drivers working when major changes to the software are made: new versions of Android usually use newer versions of the Linux kernel which has implications for the drivers. Getting these drivers as source code will be a big licensing problem because manufactures are not that eager to share the intellectual property which is implicitly embedded in these drivers.

And even if Google had all these drivers they would need to test any software changes against all these phones and phone sub versions because manufactures are repeatedly change the hardware included in the phones to make it cheaper or to work around patent issues. It's a maintenance nightmare which right now gets handled by the manufactures by simply ignoring models which are not the newest. I don't think Google would like to take over this nightmare.

The best thing of course would be if manufactures would release solid hardware with open drivers and make sure that these drivers get included into Linux kernel. This way it would be much easier too release updates, both for Google and for third parties like Cyanogenmod or AOSP. This way also the supported life of the phones would be longer. Unfortunately this is not in the interest of the manufactures because they rather like to sell new phones than see their older phones used a lot.

Apart from that the x86 environment (PC, Windows) is different from ARM (mobile phones). With x86 you have interfaces which were designed so that you can replace hardware and that hardware can be autodetected. With ARM you instead have the SoC which contains everything and each new phone or even variety of the phone has its own SoC. The OS must have knowledge about the capabilities up-front, i.e. there is no general kernel for all hardware. I think this is getting better, but that's the current state as far I know. Thus in effect you cannot support a single OS with flexible drivers but instead have to support lots of OS varieties which also makes maintenance harder. And of course every manufacture makes its own special adjustments to this OS to support its hardware or to work around bugs.

  • 1
    Aren't Android kernel and Linux separate products? I read that Linux developers rejected to include some drastic architectural changes that Google proposed so the latter went their own way. – ivan_pozdeev Jan 14 '17 at 5:00
  • The Linux kernel is not a "product". Most Linux distributions don't use the mainline kernel but most have patches on top for drivers, backports of security features etc. Android has some of their own patches specific for the mobile environment, new IPC techniques etc but they try to get this into the mainline kernel. But this is not a ship and forget but sometimes drastic changes are needed so that everybody can better profit from the ideas. Nonetheless the base Android kernel is open source like the mainline kernel. – Steffen Ullrich Jan 14 '17 at 6:37
  • I'm asking because you are advising manufacturers to "make sure that these drivers get included into Linux kernel". If Android is much different (including in its requirements for driver functionality and/or design), it's impractical to develop and maintain a driver for another codebase (even less so, one that the device isn't supposed to be ever used with). – ivan_pozdeev Jan 14 '17 at 10:49
  • @ivan_pozdeev: Android is not that much different, i.e. there is no different driver architecture etc. Its mainly some IPC, some power management, different scheduling ... . But like I said, more and more Android specific stuff gets actually integrated into the mainline kernel. Apart from that vendors could actually open source their drivers the same way Google open sources their Android specific kernel changes, i.e. publish them even if they are not integrated into the mainline kernel (yet). – Steffen Ullrich Jan 14 '17 at 11:03
1

From an InfoSec perspective, I can think of one major reason:

Vulnerable Code

If stock Android were to contain all drivers needed, that would mean shipping with a lot of 3rd-party drivers from a lot of vendors. Disregarding file-size issues, with all the different vendors and their various quality levels, there are sure to be some vulnerable drivers. Why should Google be responsible for distributing the security vulnerabilities of 3rd-party code? And would vendors be fine with waiting for an update to Android to launch their product?

On the flip side, I can't see any reason Google would be interested in developing all these drivers themselves. Different vendors make their own proprietary hardware and their own proprietary drivers. If vendors relied on Google to develop their drivers, they would be waiting around for a driver that might never get published.

Instead, you have to wait for your tablet manufacturer to add drivers to it, in order so that it will work on your tablet model. And your tablet manufacturer might never do so.

Yeah, but if the manufacturer isn't going to make an update for their proprietary driver anyway, it will never be available to include in stock Android anyway.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.