"Don't be evil." Die zin voerden Google en moederbedrijf Alphabet jarenlang als motto. Na meerdere schandalen en rechtszaken kregen mensen echter twijfels bij hoe streng Google zich aan zijn eigen motto hield en bij Alphabet werd de zin helemaal geschrapt uit de gedragscode. Gelukkig zijn er nog genoeg projecten die de bedrijfsfilosofie van Google in ere houden. Een van die projecten is No Longer Evil Thermostat, dat niet langer ondersteunde Nest-thermostaten nieuw leven inblaast. Tweakers ging het gesprek aan met ontwikkelaar Cody Kociemba over hoe zijn project uitgroeide van een idee voor een bugbounty tot volwaardige vluchtroute voor mensen met een oude Nest-thermostaat.
Eind oktober stopte Google definitief met de ondersteuning van de Nest Learning-thermostaten van de eerste en tweede generatie. De Nest-thermostaten van de eerste generatie kwamen niet uit in Europa, maar in 2014 kwam de tweede generatie Nest-thermostaat hier beschikbaar voor 219 euro. Na elf jaar besloot Google de servers offline te halen. 'In aanmerking komende' Europese Nest-gebruikers ontvingen, als schrale troost, een e-mail met een code voor 50 procent korting op de nieuwste tado-thermostaat, toen Google aankondigde de ondersteuning voor de oude Nest Learning-thermostaten te schrappen en de verkoop van Nest-thermostaten in Europa volledig stop te zetten.
Het einde van de ondersteuning betekent niet dat de thermostaat helemaal niet meer werkt, maar slim is hij bepaald niet meer te noemen. Gebruikers kunnen de status van het apparaat niet meer via hun smartphone controleren en het apparaat niet meer op afstand bedienen. Ook komen meldingen niet meer binnen. Daarnaast krijgt het apparaat geen software- of beveiligingsupdates meer. Op de thermostaat zelf zijn nog wel schema's en temperatuurmodi in te stellen – een normale thermostaat met wat extra functies dus. 'Leren' doen de thermostaten overigens nog wel. Of beter gezegd: Google leert van de thermostaten, die ook na het eind van de ondersteuning nog allerlei data naar Googles servers sturen. Google zei tegen The Verge dat dat nodig is 'voor service- en probleemregistratie'.
Een goede uitdaging
Dit moet beter kunnen, dacht Kociemba. Hij creëerde daarom het opensourceproject No Longer Evil Thermostat, dat onder een MIT-licentie verkrijgbaar is op GitHub. Kociemba schrijft op de website van het project dat hij meteen na de aankondiging van Google wist dat hij iets wilde doen: "Maar laten we eerlijk zijn: iets willen doen en het ook daadwerkelijk doen zijn twee verschillende dingen. Wat me echt enthousiast maakte, was de aankondiging van de FULU-bounty. Ik hou van een goede uitdaging en een mogelijke beloning aan het einde maakt het nog beter. Dus ik dook erin."
Kociemba ging op zoek naar een manier om de thermostaat te laten functioneren op eigen hardware. Het eerste probleem waar de ontwikkelaar tegenaan liep, is de certificaatpinning. Dit betekent dat er een certificaat van een server vastgezet is in de code. Wanneer het apparaat vervolgens verbinding probeert te maken met een server, vergelijkt de software het certificaat van die server met de 'gepinde' versie. Als het certificaat niet exact overeenkomt, wordt de verbinding geweigerd. Dat voorkomt aanvallen, maar zorgt er ook voor dat gebruikers moeilijk roottoegang kunnen krijgen. Die is juist cruciaal, vertelt Kociemba aan Tweakers: "Zonder root kun je niets custom flashen, omdat de partitie met de systeembestanden is ondertekend en alleen-lezen is."
Kociemba's eerste uitdaging was om roottoegang te krijgen. Hij verkreeg die door een stokoude exploit van The Exploiteers. De exploit, die in 2014 werd uitgebracht, maakt gebruik van de devicefirmware-updatemodus. Dat is een speciale modus die volgens de makers van de exploit bedoeld is om de fabrikant een makkelijke manier te geven om problemen op de apparaten te diagnosticeren en te verhelpen. Deze modus geeft hackers echter ook de mogelijkheid om de apparaten zonder beperkingen aan te passen.
De exploit gebruikt de devicefirmware-updatemodus om x-loader te laden, een bootloader die als eerste laadpunt van het systeem wordt gebruikt. Deze laadt vervolgens een andere bootloader in het geheugen, de opensourcesoftware U-Boot. De exploit gebruikt een aangepaste versie van deze software om een Linux-kernel op te starten, daarmee toegang te krijgen tot het bestandssysteem van het apparaat en een Dropbear-SSH-server te installeren. De opensourcesoftware Dropbear biedt SSH-servers die zijn bedoeld voor apparaten met weinig geheugen en rekenkracht, zoals embedded systemen. De Dropbear-server in de exploit is zo ingesteld dat hij opstart als een dienst met rootbevoegdheden. Daardoor ontstaat in feite een achterdeur en kon Kociemba op afstand verbinding maken met de thermostaat en roottoegang krijgen.
Open deur
roottoegang tot Nest-thermostaten krijgen.
Na de installatie wordt aan het Nest-systeem een shellscript toegevoegd. Dat zoekt elke tien minuten op de virtuele schijf van de Nest naar de bestanden host.txt, dat aangeeft met welke server de Nest verbinding moet maken, en key.txt, dat de RSA-sleutel bevat om een geautomatiseerde SSH-verbinding op te zetten met de server die in de host.txt staat. Kociemba: "De enige reden dat dit project überhaupt mogelijk is, is omdat de vroege exploit bestond en Google deze nooit heeft gepatcht. Het bedrijf heeft in feite een open deur achtergelaten voor twee hele generaties apparaten."
Door de roottoegang kon Kociemba het certificaat van Google vervangen door een ander certificaat. "Na die wijziging vertrouwt de thermostaat jouw certificaat in plaats van dat van Google en kun je hem naar elke gewenste server verwijzen", legt hij uit. "Met roottoegang zijn er eigenlijk geen beveiligingen meer die omleiding voorkomen, omdat het apparaat alles vertrouwt wat je in het vertrouwde Certificate Authorities-register plaatst."
Daarnaast kon Kociemba met roottoegang de binary's, de bestanden waarin de broncode is omgezet in code die voor systemen te draaien is, rechtstreeks van het bestandssysteem van de thermostaat uitlezen. Die laadde hij vervolgens in Ghidra, een opensourceframework voor het reverse-engineeren van software, dat wordt onderhouden door het onderzoeksdirectoraat van de Amerikaanse National Security Agency. De gehele api-structuur, inclusief de payloadformaten en de manier waarop verzoeken worden ondertekend, was volgens Kociemba nog aanwezig in de code.
De ontwikkelaar zag dat, hoewel Google de ondersteuning voor de eerste twee generaties Nest-thermostaten heeft stopgezet, de apparaten dezelfde backend gebruikten als de nieuwere generaties: "De code op de oudere apparaten verwees nog steeds naar die eindpunten. Toen ik de verzoekstroom eenmaal begreep, bouwde ik een lokale backend die dezelfde antwoorden repliceerde die de servers van Google zouden hebben gegeven. Vanaf dat moment was het vooral een kwestie van het vervangen van het ingebouwde SSL-certificaat door een certificaat dat ik zelf beheerde, zodat de thermostaat verbinding zou maken met de nieuwe backend in plaats van met Google."
Risico's
Kociemba erkent dat er een risico is dat Google probeert zijn project stop te zetten. "Ik ben me ervan bewust dat Google mogelijk een DMCA-verwijderingsverzoek zou kunnen indienen of het project op een andere manier zou kunnen aanpakken. Dat is altijd een risico wanneer er sprake is van reverse-engineering, maar moreel gezien vind ik dat dit werk er moet zijn. Deze apparaten zijn betaald door consumenten en ze zijn door de leverancier afgeschreven. Mensen zouden absoluut de mogelijkheid moeten hebben om hun eigen hardware aan te passen en die aanpassingen met anderen te delen, vooral wanneer het alternatief is dat prima functionele apparaten e-waste worden. Als het verdedigen van die overtuiging me technisch gezien tot een crimineel maakt, so be it. Ik sta liever aan de kant van eigenaren en hun recht om de hardware die ze hebben gekocht te beheren."
Kociemba pleit ervoor dat dit recht in de wet wordt verankerd. "De manier waarop bedrijven clouddiensten sluiten en anderszins goede hardware buiten gebruik stellen, creëert een enorme hoeveelheid e-waste. Het is onlogisch dat apparaten die perfect werken op de vuilnisbelt belanden omdat een knop bij de server van de fabrikant is omgezet. Er zouden wetten moeten komen die voorkomen dat bedrijven apparaten aan clouddiensten koppelen zonder klanten een fallbackoptie of een zelfgehoste oplossing te bieden. Als een leverancier de ondersteuning van een product wil stopzetten, zou hij verplicht moeten zijn om de software te openen of een migratiepad aan te bieden waarmee de hardware functioneel blijft."
Google zegt tegen Tweakers niet te willen reageren.
Redactie: Imre Himmelbauer • Eindredactie: Marger Verschuur