2min

Google heeft het Android-platform ondersteuning gegeven voor de Rust-programmeertaal. Daarmee hoopt het bedrijf toekomstige bugs te voorkomen die leiden tot beveiligingsproblemen.

In een blogpost vertelt Google dat het bedrijf Rust vooral wil inzetten voor code van de diepere lagen van het besturingssysteem, zoals de bootloader en de drivers. Momenteel gebruikt Google daar nog C en C++ voor. Die talen bieden veel controle en voorspelbaarheid en zijn licht om te draaien, maar leggen de verantwoordelijkheid voor het beheer van geheugen in de handen van de ontwikkelaar. Meestal gaat dit goed, maar bugs komen toch voor en dergelijke fouten zorgen voor beveiligingsproblemen. Android-apps worden over het algemeen in Java geschreven. Daarbij wordt het geheugen beheerd door de Android Runtime, waardoor bugs in het geheugen uitgesloten worden.

De Rule of 2

Om te voorkomen dat er beveiligingsproblemen optreden, houdt Google de Rule of 2 aan voor het ontwikkelen van Android-processen. In elke situatie mogen er maximaal twee van de volgende drie onveilige situaties voorkomen:

  • De code verwerkt onveilige input;
  • De code heeft geen sterke sandboxomgeving;
  • De code is in een onveilige taal (C/C++) geschreven.

Het resultaat is dat code in C/C++ niet te maken krijgt met onveilige input, tenzij dit in een goed afgesloten sandbox gebeurt. Het nadeel van deze aanpak is echter dat het werken met sandboxes intensief is voor het systeem: er is sprake van meer overhead, meer geheugengebruik en meer latency. Echter worden bugs met deze aanpak niet volledig uitgesloten, waardoor aanvallers met een combinatie van kwetsbaarheden toch schade kunnen toebrengen.

Rust

Daarom heeft Google besloten om Rust in gebruik te nemen. De programmeertaal lijkt qua syntaxis sterk op C++, maar beschermt dankzij zijn borrow checker het geheugen tegen programmeerfouten, waarmee het memory-safe is. Rust is aanvankelijk ontworpen door Mozilla-medewerker Graydon Hoare, maar wordt door steeds meer organisaties ondersteund. De taal is enorm populair bij ontwikkelaars en kreeg onlangs zijn eigen belangen- en beheerorganisatie: de Rust Foundation. Hiermee is de taal minder afhankelijk van Mozilla geworden.

Door in Rust te programmeren, hoopt Google op termijn veel minder tijd kwijt te zijn aan het opsporen en oplossen van bugs. Het bedrijf is echter niet van plan om heel Android in Rust te herschrijven. Het grootste deel van de bugs worden binnen een jaar gevonden en daarna wordt de code al snel volwassen. Google ziet het nut van het herschrijven van volwassen code met relatief weinig bugs niet in.

Tip: Google wint rechtszaak van Oracle over Java-code in Android