Před několika dny došlo k neobvyklému incidentu , který otřásl komunitou vývojářů linuxového jádra: Linus Torvalds nařídil okamžité zablokování účtu Keese Cooka na kernel.org poté, co v jeho gitovém repozitáři zjistil zmanipulované commity.
Kees Cook, uznávaný pro své vedení v bezpečnostním týmu Ubuntu a pro údržbu více než tuctu subsystémů souvisejících s bezpečností jádra, dostal dočasný zákaz odesílat změny, dokud se nevyjasní fakta.
Změna autorství a podpisů v repozitáři Kees Cook
Problém vznikl z požadavku na začlenění změn do větve jádra 6.16, v níž Linus identifikoval odkazy na repozitář obsahující manipulované commity, kde bylo jeho jméno uvedeno jako autor a potvrzovatel, přestože je neprovedl. Jedním z nejzávažnějších příkladů byla existence duplicitního commitu, který měl identický obsah s originálem, ale měl odlišný SHA1 hash, a který falešně obsahoval podpis Linuse Torvaldse.
Tyto změny nemohly být připsány pouze náhodné chybě během operace rebase v gitu, protože zahrnovaly masivní úpravu citlivých informací, včetně více než 6 000 přepsaných commitů, z nichž 330 neslo Linusovo jméno jako autora.
Torvaldsova reakce: podezření z úmyslné manipulace
Linus Torvalds neskrýval své obavy a události označil za potenciálně zlomyslné:
„Jeden nebo dva přepisy by mohly být chybou. Ale tisíce z nich, mnohé s mým padělaným podpisem, chybou nejsou,“ prohlásil.
Vzhledem k rozsahu změn a riziku pro integritu oficiálního kernel stromu požádal Torvalds Konstantina Rjabitseva, administrátora infrastruktury kernel.org, aby zablokoval přístup Keese Cooka, dokud se situace nevyjasní.
Kees Cook v reakci vysvětlil, že se nedávno setkal s technickými problémy , které mohly incident spustit. Uvedl, že jeho SSD disk nefungoval správně během kopírování, což vedlo k poškození několika repozitářů. Po těchto chybách se pokusil obnovit stav svého repozitáře pomocí příkazu `git rebase` a různých automatizačních nástrojů.
Tyto operace však byly provedeny na kritických větvích , jako například for-next/hardening a for-linus/hardening, což vedlo k nechtěné úpravě historie repozitáře, včetně změn v autorství commitů. Navzdory jeho vysvětlení zůstal Linus skeptický.
„Nechápu, jak je možné, že k nechtěnému předjíždění dojde, natož s takovým množstvím úprav.“
Skutečný viník: upoutávky na git-filter-repo a b4
V následné zprávě Kees Cook identifikoval pravděpodobný zdroj chyby : kombinované použití dvou nástrojů, git-filter-repo a b4 trailers, které manipulují s historií commitů a trailery (označeními jako Signed-off-by:) v commitech.
Toto zneužití utilit by způsobilo automatické přepisování tisíců commitů , včetně nahrazení autora výchozí hodnotou (v tomto případě Linus Torvalds), aniž by si Kees chyby v té době všiml . Konstantin Ryabitsev, autor nástroje b4, tuto teorii potvrdil a prohlásil, že Cook neměl žádný zlý úmysl. Systém ve skutečnosti již generoval varování, která byla ignorována.
Po vyjasnění situace byl Keesovi Cookovi obnoven přístup k kernel.org. Jako preventivní opatření bylo oznámeno, že nástroj b4 bude obsahovat novou bezpečnostní kontrolu, která zabrání modifikaci commitů, jejichž autorství neodpovídá identitě aktuálního uživatele. Cílem je předejít podobným chybám a ochránit integritu zdrojového kódu jádra.
Kees se zase zavázal, že znovu vytvoří postižené větve z jednotlivých záplat a důkladně analyzuje kroky, které k chybě vedly. Ačkoli incident napjal vztahy v týmu vývoje jádra, zdůraznil také důležitost opatrného používání nástrojů pro přepisování historie, zejména v tak kritických projektech, jako je linuxové jádro.
Nakonec stojí za zmínku, že tento incident mezi Linusem Torvaldsem a Keesem Cookem slouží jako varování před nebezpečím manipulace s historií commitů a že díky rychlému zásahu týmu kernel.org a transparentnosti procesu se situace podařilo dostat pod kontrolu.
A konečně, pokud máte zájem dozvědět se více, podrobnosti naleznete na následujícím odkazu.