Každý rok se dočteme o hromadě zranitelností v softwaru. Dnes si vyzkoušíme tu učebnicovou. Záškodník způsobí fiktivní atomovou katastrofu

Každý rok se dočteme o hromadě zranitelností v softwaru. Dnes si vyzkoušíme tu učebnicovou. Záškodník způsobí fiktivní atomovou katastrofu

Jaderná elektrárna Havlíčkův Brod s nádrží Kafíčko na Mapy.cz

Jaderná elektrárna Havlíčkův Brod s nádrží Kafíčko na Mapy.cz

Textový terminál pro přístup pana ředitele Papouška

Textový terminál pro přístup pana ředitele Papouška

Úspěšné přihlášení k zabezpečenému terminálu elektrárny

Úspěšné přihlášení k zabezpečenému terminálu elektrárny

Terminál je zabezpečený heslem a ochranou před útoky typu brute-force

Terminál je zabezpečený heslem a ochranou před útoky typu brute-force

Funkce gets čeká na znaky ze standardního vstupu, a tak můžeme začít psát

Funkce gets čeká na znaky ze standardního vstupu, a tak můžeme začít psát

Zjednodušený pohled na alokovanou paměť pro proměnné ve stacku. Prvních dvacet bajtů okupuje naše pole heslo, pak následují další proměnné programu

Zjednodušený pohled na alokovanou paměť pro proměnné ve stacku. Prvních dvacet bajtů okupuje naše pole heslo, pak následují další proměnné programu

Dynamicky alokované pole za běhu na Windows

Dynamicky alokované pole za běhu na Windows

Dynamicky alokované pole za běhu na Linuxu

Dynamicky alokované pole za běhu na Linuxu

Jelikož dopředu neznáme velikost dynamicky alokované paměti, vytváří se ve volnější části paměti RAM – v tzv. heapu. Častou alokací v heapu může zejména na mikropočítačích a mikrokontrolerech s maličkou RAM kvůli fragmentaci brzy dojít místo

Jelikož dopředu neznáme velikost dynamicky alokované paměti, vytváří se ve volnější části paměti RAM – v tzv. heapu. Častou alokací v heapu může zejména na mikropočítačích a mikrokontrolerech s maličkou RAM kvůli fragmentaci brzy dojít místo

Neznáme heslo pana ředitele, ale to vůbec nevadí!

Neznáme heslo pana ředitele, ale to vůbec nevadí!

Druhá verze programu, ve kterém vypíšeme současný a výchozí stav proměnných. Všimněte si, že obrovské přetečení pole heslo zaplnilo i všechny ostatní proměnné ve stacku

Druhá verze programu, ve kterém vypíšeme současný a výchozí stav proměnných. Všimněte si, že obrovské přetečení pole heslo zaplnilo i všechny ostatní proměnné ve stacku

Překlad na Windows 11 pomocí balíku Build Tools for Visual Studio 2019. Překlad proběhne bez upozornění na zranitelnost a program bude fungovat korektně

Překlad na Windows 11 pomocí balíku Build Tools for Visual Studio 2019. Překlad proběhne bez upozornění na zranitelnost a program bude fungovat korektně

Na Windows vše funguje korektně a k přetečení pole do okolního stacku vůbec nedojde

Na Windows vše funguje korektně a k přetečení pole do okolního stacku vůbec nedojde

Překladač GCC nás varuje před nebezpečnou funkcí, která už není součástí novější specifikace pro jazyky C/C++

Překladač GCC nás varuje před nebezpečnou funkcí, která už není součástí novější specifikace pro jazyky C/C++

I v tomto případě s výchozími parametry překladače vše funguje

I v tomto případě s výchozími parametry překladače vše funguje

Přepínačem překladače jsme vypnuli kanárka...

Přepínačem překladače jsme vypnuli kanárka...

...a vytvořili jsme tak nebezpečný program, ve kterém může přetéct pole a ovlivnit ostatní proměnné ve stacku, pomocí čehož v našem případě zcela obejdeme vyplňování hesla

...a vytvořili jsme tak nebezpečný program, ve kterém může přetéct pole a ovlivnit ostatní proměnné ve stacku, pomocí čehož v našem případě zcela obejdeme vyplňování hesla

Jaderná elektrárna Havlíčkův Brod s nádrží Kafíčko na Mapy.cz
Textový terminál pro přístup pana ředitele Papouška
Úspěšné přihlášení k zabezpečenému terminálu elektrárny
Terminál je zabezpečený heslem a ochranou před útoky typu brute-force
18
Fotogalerie

Programování elektroniky: Když přeteče zásobník, vybuchne jaderná elektrárna Havlíčkův Brod

  • Každý rok se dočteme o hromadě zranitelností v softwaru
  • Dnes si vyzkoušíme tu učebnicovou
  • Záškodník způsobí fiktivní atomovou katastrofu

A máme tu další zranitelnost v programu X, pomocí které může útočník Y spouštět zákeřný kód Z. Zhruba nějak tak začíná každý zpravodajský článek ze světa počítačové bezpečnosti a ze zranitelnosti, zákeřného kódu a jeho spouštění se už pro mnohé staly vlastně nicneříkající slova.

Abychom těmto slovům dali skutečný tvar a obsah, dnes si to celé vyzkoušíme. Ale nebojte se, doktorát z MIT nebude potřeba, tento prakticky vhled do počítačové (ne)bezpečnosti totiž s trochou píle zvládne i vaše babička.

Útokem buffer overflow obejdeme heslo

V dnešním pokračování našeho seriálu o programování elektroniky nebudeme flashovat žádný malý čip, ale vytvoříme aplikaci pro ovládání fiktivní jaderné elektrárny v Havlíčkové Brodě s primitivním přihlašovacím formulářem pro jejího ředitele, inženýra Papouška.

Podívejte se na náš útok v praxi. Podrobné vysvětlení krok za krokem najdete níže v článku pro předplatitele:

Zdrojové kódy a spustitelné desktopové programy pro Windows i Linux najdete na GitHubu našeho seriálu

No, a pak – aniž bychom znali Papouškovo heslo – se do ovládacího pultu dostaneme také. Demonstrujeme si na něm totiž učebnicový útok z rodiny buffer/stack overflow. Jako vždy nebude chybět kompletní a komentovaný zdrojový kód programu. Tak, dost bylo teoretické omáčky a hurá do Havlíčkova Brodu.

Jaderná elektrárna Havlíčkův Brod

Poblíž soutoku Šlapanky a Sázavy stojí už od roku 1986 elektrárna s dvojicí reaktorů VVER 440 Milada-I3A a Zuzana-I3B. Pro výrobu páry v generátorech se pak používá přilehlá vodní nádrž s docela trefným názvem Kafíčko.

48859d42-db02-4118-8058-3b1edf02559e
Jaderná elektrárna Havlíčkův Brod s nádrží Kafíčko na Mapy.cz

JEHB (Jaderná elektrárna Havlíčkův Brod) prošla v 90. letech rozsáhlou modernizací a jako první v tehdejším mladičkém Česku dostala nový počítačový systém, jehož autorem byl Státní ústav číslicový, s.p.

Součástí je textový a multiplatformní terminál pro vzdálený přístup skrze internetovou síť napsaný v jazyku C. A právě s ním si dnes pohrajeme, program se totiž zrodil před bezmála 30 lety, no a tomu odpovídá i jeho naivní zabezpečení.

ea8f9229-d13a-4981-b988-a6ce63434a51
Textový terminál pro přístup pana ředitele Papouška

Textový terminál pro ředitele Papouška 

Terminál vás po spuštění požádá o heslo, no a pokud bude odpovídat, inženýr Papoušek bude moci provést hromadu operací. Mohl by třeba z tepla své postele přetížit sekundární reaktor Zuzana-I3B a proměnit malebnou Vysočinu na stovky let v radioaktivní pustinu.

f862398f-bff8-4f7d-8821-26b35a47ef60
Úspěšné přihlášení k zabezpečenému terminálu elektrárny

Pokračování článku patří k prémiovému obsahu pro předplatitele

Chci Premium a Živě.cz bez reklam Od 41 Kč měsíčně

Určitě si přečtěte

Články odjinud