Heslo v Grub2 lze obejít: stačí stisknout 28× backspace

Petr Krčmář 17. 12. 2015

Bezpečnostní analytici Hector Marco a Ismael Ripoll objevili vážnou bezpečnostní chybu v Grub2, který je nejrozšířenějším zavaděčem linuxových distribucí. Může být chráněn heslem, ale tuto ochranu je možné velmi snadno obejít, není k tomu třeba nic speciálního: stačí stisknout 28× po sobě klávesu backspace.

Dva analytici z University of Valencia’s Cybersecurity research, Hector Marco a Ismael Ripoll, objevili v zavaděči Grub2 vážnou zranitelnost, která může být zneužita k překonání ochrany pomocí hesla a kompromitaci cílového počítače.

Není k tomu přitom potřeba žádný složitý postup: stačí 28krát stisknout klávesu backspace. Na některých linuxových distribucích tím zcela obejdete ochranu zavaděče heslem. V tu chvíli vám nic nebrání v předávání vlastních parametrů jádra nebo nastartování vlastního systému.

Grub2 je dnes jedním z nejpoužívanějších zavaděčů, rozhodně na platformě x86. Používá se ale i jinde, například na embedded zařízeních. Navíc nejen na Linuxu – například Solaris jej na x86 také pro zavádění používá.

Ve zveřejněném popisu chyby se píše, že po 28. stisku je překonána ochrana heslem a uživatel má plný přístup k „rescue shellu“ – příkazové řádce zavaděče. Konkrétně se problém týká verzí 1.98 (prosinec 2009) až 2.02 (prosinec 2015). Jde tedy o šest let starou chybu, která je rozšířena do mnoha distribucí.

Za problémem stojí chyba ve funkci grub_username_get, která zaznamenává počet zapsaných znaků a při stisku backspace hodnotu odečítá. Chyba se objevila v commitu b391bdb2f2c5ccf29da66cecdbfb7566656a704d. Nekontroluje se totiž dolní mez proměnné, takže se hodnota snadno dostane do záporných čísel (integer underflow).

Pokud uživatel dále mačká klávesu backspace, přepisují se nulami proměnné umístěné v paměti před tou, která má být ve skutečnosti vynulována. Při správném počtu stisků (28) je přepsána návratová hodnota funkce grub_memset(). To vede ke spuštění funkce grub_rescue_run() a řádka je na světě.

Chybná funkce vypadá takto:

static int
grub_username_get (char buf[], unsigned buf_size)
{
  unsigned cur_len = 0;
  int key;

  while (1)
    {
      key = grub_getkey ();
      if (key == '\n' || key == '\r')
        break;

      if (key == '\e')
        {
          cur_len = 0;
          break;
        }

      if (key == '\b') # Does not checks underflows !!
        {
          cur_len--; # Integer underflow !!
          grub_printf ("\b");
          continue;
        }

      if (!grub_isprint (key))
        continue;

      if (cur_len + 2 < buf_size)
        {
          buf[cur_len++] = key; # Off-by-two !!
          grub_printf ("%c", key);
        }
    }

  grub_memset (buf + cur_len, 0, buf_size - cur_len); # Out of bounds overwrite

  grub_xputs ("\n");
  grub_refresh ();

  return (key != '\e');
}

Útočník může tuto chybu zneužít a i přes ochranu hesla získat přístup k příkazové řádce, která mu umožní:

  • Zvýšit oprávnění a plně ovládat zavaděč,
  • načíst vlastní jádro a/nebo initramfs (třeba z USB) a pak si přečíst obsah disku nebo zavést rootkit,
  • modifikovat nebo smazat data na discích, i když jsou šifrovaná. Je možné takto smazat i Grub samotný a počítač odstavit.

Vývojáři předvedli funkční postup pro vložení backdooru do nainstalovaného systému. Zveřejnili také opravu v podobě velmi krátkého patche. Řada distribucí už vydala opravnou verzi: Debian, Ubuntu, Red Hat a další. Doporučujeme co nejdříve aktualizovat.

(Zdroj: SecurityAffairs.co)

Podnikatel.cz: Eshopy s dopravou zdarma. Zválcují ostatní?

Eshopy s dopravou zdarma. Zválcují ostatní?

120na80.cz: Vyzrajte na návaly a pocení v přechodu

Vyzrajte na návaly a pocení v přechodu

120na80.cz: 5 triků, jak zastavit krvácení po holení

5 triků, jak zastavit krvácení po holení

120na80.cz: Jak si udržet zdravou vaginu

Jak si udržet zdravou vaginu

Vitalia.cz: Děti jsou sportem opotřebované

Děti jsou sportem opotřebované

DigiZone.cz: Konec geoblokace online médií?

Konec geoblokace online médií?

Podnikatel.cz: Rošáda v živnostech. Týká se vás?

Rošáda v živnostech. Týká se vás?

Vitalia.cz: Syndrom PC vidění: stačí dvě hodiny denně

Syndrom PC vidění: stačí dvě hodiny denně

Vitalia.cz: Ministerstvo: tyto příbory jsou nebezpečné

Ministerstvo: tyto příbory jsou nebezpečné

DigiZone.cz: Konec geoblokace? Ani náhodou…

Konec geoblokace? Ani náhodou…

Vitalia.cz: Muži kouří 24 cigaret denně, ženy o dost míň

Muži kouří 24 cigaret denně, ženy o dost míň

Lupa.cz: Kam si doma dáte internet věcí? Na polici?

Kam si doma dáte internet věcí? Na polici?

Vitalia.cz: Tetanus v USA – i po odřeninách

Tetanus v USA – i po odřeninách

Vitalia.cz: Martin Kasa o byznysu s léky

Martin Kasa o byznysu s léky

Lupa.cz: Nová podoba Instagramu? Katastrofa

Nová podoba Instagramu? Katastrofa

120na80.cz: 10 nej přípravků na holení

10 nej přípravků na holení

DigiZone.cz: Mafra varuje před stíháním za pomluvu

Mafra varuje před stíháním za pomluvu

Vitalia.cz: Před, nebo po snídani? Kdy je lepší čistit si zuby

Před, nebo po snídani? Kdy je lepší čistit si zuby

DigiZone.cz: DAB+ versus FM, ČRo a ČRa proti APSV

DAB+ versus FM, ČRo a ČRa proti APSV

DigiZone.cz: Živí mrtví budou na AMC koncem srpna

Živí mrtví budou na AMC koncem srpna