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í:

widgety

  • 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)

Našli jste v článku chybu?
Lupa.cz: Proč jsou firemní počítače pomalé?

Proč jsou firemní počítače pomalé?

Vitalia.cz: Antibakteriální mýdla nepomáhají, spíš škodí

Antibakteriální mýdla nepomáhají, spíš škodí

Lupa.cz: Aukro.cz mění majitele. Vrací se do českých rukou

Aukro.cz mění majitele. Vrací se do českých rukou

DigiZone.cz: Světový pohár v přímém přenosu na ČT

Světový pohár v přímém přenosu na ČT

Root.cz: Hořící telefon Samsung Note 7 zapálil auto

Hořící telefon Samsung Note 7 zapálil auto

DigiZone.cz: Nova opět stahuje „milionáře“

Nova opět stahuje „milionáře“

Podnikatel.cz: Letáky? Lidi zuří, ale ony stále fungují

Letáky? Lidi zuří, ale ony stále fungují

DigiZone.cz: Wimbledon na Nova Sport až do 2019

Wimbledon na Nova Sport až do 2019

Vitalia.cz: Tohle jsou nejlepší česká piva podle odborníků

Tohle jsou nejlepší česká piva podle odborníků

120na80.cz: Co je padesátkrát sladší než cukr?

Co je padesátkrát sladší než cukr?

120na80.cz: Galerie: Čínští policisté testují českou minerálku

Galerie: Čínští policisté testují českou minerálku

DigiZone.cz: Numan Two: rozhlasový přijímač s CD

Numan Two: rozhlasový přijímač s CD

Vitalia.cz: Voda z Vltavy před a po úpravě na pitnou

Voda z Vltavy před a po úpravě na pitnou

Vitalia.cz: Muž, který miluje příliš. Ženám neimponuje

Muž, který miluje příliš. Ženám neimponuje

DigiZone.cz: Digi Slovakia zařazuje stanice SPI

Digi Slovakia zařazuje stanice SPI

Podnikatel.cz: „Lex Babiš“ Babišovi paradoxně pomůže

„Lex Babiš“ Babišovi paradoxně pomůže

Lupa.cz: Jak levné procesory změnily svět?

Jak levné procesory změnily svět?

Podnikatel.cz: Byla finanční manažerka, teď cvičí jógu

Byla finanční manažerka, teď cvičí jógu

Vitalia.cz: Jsou vegani a vyrábějí nemléko

Jsou vegani a vyrábějí nemléko

Vitalia.cz: Tesco nabízí desítky tun jídla zdarma

Tesco nabízí desítky tun jídla zdarma