Alleen de in de firmware opgenomen twee besturingssystemen mogen van BIOS-opvolger UEFI booten. Het opstarten vanaf installatiemedia voor bijvoorbeeld Red Hats Fedora is wel mogelijk, maar vervolgens booten van die geïnstalleerde Linux-distributie weer niet. Deze whitelist-aanpak van Lenovo is ontdekt door Linux-ontwikkelaar Matthew Garrett op de Thinkcentre M92p-desktop.

Geen Windows-truc

De net bij Red Hat opgestapte developer heeft de bootweigering op dat pc-model uitgezocht. Dit blijkt geen bijwerking te zijn van het omstreden Secure Boot. Die beveiligingsoptie voor Windows 8 haakt aan op de UEFI-functie om alleen gecertificeerde besturingssystemen toe te staan een pc te booten.

De meest interessante ontdekking in de zoektocht naar Lenovo's bootbeperking is volgens Garrett het feit dat Fedora niet in de boot-whitelist voorkomt. "We hebben wat tijd besteed aan het vergelijken van de variabelen [in de Lenovo-firmware - red.]".

Daarbij zijn geleidelijk enkele potentiële oorzaken afgestreept. Zo nam Linux qua bootoptie ergens in de code een extra 6 bytes in beslag. "Een voldoende paranoïde firmware-implementatie zou daarover kunnen vallen", blogt Garrett. Het fixen van die 6 byte-afwijking leidde echter niet tot succesvol booten.

Letterlijk op naam

"Uiteindelijk hebben we gewoon geprobeerd de Windows-optie te veranderen. En toen werkte het [booten - red.] niet meer." De UEFI-firmware in Lenovo's M92p-pc controleert dus 'hardcoded' op besturingssystemen en staat alleen de twee stuks toe die letterlijk zijn genoemd in die firmware.

Voor Windows betreft dat de reguliere naam voor de bootmanager van dat Microsoft-besturingssysteem. De standaard bootomschrijving van Red Hats zakelijke Linux-distributie (RHEL) is ook opgenomen in de whitelist.

Garrett legt in zijn blogpost uit dat UEFI de bootopties aan de gebruiker voorschotelt op basis van de omschrijving die een besturingssysteem aandraagt. "In plaats van 'hard drive 0' en 'usb drive 3' kan de firmware 'Windows Boot Manager' en Fedora Linux' weergeven." Hij stelt dat er geen enkele reden is voor de firmware om 'boottoestemming' te verlenen op basis van die omschrijvingen.

Firmware doorzocht

Toch is dat wat er gebeurt. Het bewijs is behoorlijk zwaar, aldus de open source-ontwikkelaar. Hij geeft aan dat er in het geval van twee identieke bootomschrijvingen, één die zegt 'Windows Boot Manager en één die anders heet, alleen de eerste werkt. Toen die conclusie eenmaal bereikt was, heeft Garrett de betreffende Lenovo-firmware gedownload om die te onderzoeken.

Dat onderzoek bevestigde de naamsafhankelijkheid voor de bootpermissie. "Dit is, overduidelijk, bizar. Een leverancier heeft naar het zich laat aanzien daadwerkelijk aanvullende code geschreven om te controleren of een besturingssysteem zichzelf Windows noemt voordat het dat toestaat om te booten."

Oplossing: legacy-boot

Garrett speculeert dat iemand daarna RHEL heeft geprobeerd te starten op die pc, om te ontdekken dat die zakelijke Linux-distributie niet werkt. "In plaats van het verwijdering van die controle, hebben ze toen nog een controle toegevoegd zodat RHEL ook kan booten."

Eindgebruikers die een ander besturingssysteem willen draaien op deze Lenovo-pc zijn overigens niet geheel gedwarsboomd. Zij kunnen de firmware instellen om een legacy-boot uit te voeren, waarna ze wel Fedora (of Ubuntu, of Suse, of FreeBSD, enzovoorts) kunnen starten, geeft Garrett aan.

'We kijken ernaar'

Lenovo is inmiddels op de hoogte. De pc-fabrikant heeft via Twitter van de zaak vernomen en bedankt Garrett voor zijn ontdekking. "We hebben het team gewaarschuwd en kijken ernaar."