Divný stroj - Weird machine

Koncept divný stroj je teoretický rámec k pochopení existence využije pro bezpečnostní chyby. Exploity existují empiricky, ale nebyly studovány z teoretického hlediska před vznikem rámce podivných strojů.

v zabezpečení počítače, podivný stroj je výpočetní artefakt, kde může dojít k dalšímu spuštění kódu mimo původní specifikaci programu.[1] Úzce souvisí s konceptem podivné pokyny, což jsou stavební kameny využívat na základě vytvořených vstupních údajů.[2]

Teorie

Z teoretického hlediska je vznik podivných strojů jasný, když člověk považuje software za cestu omezit počet dosažitelných stavů a ​​přechodů stavů počítače: Univerzální CPU je prostřednictvím softwaru specializováno na simulaci stroje s konečným stavem (s potenciálně velmi velkým stavovým prostorem). Mnoho států, ve kterých se CPU může nacházet, je vyloučeno a určité přechody stavů jsou vyloučeny - například ty, které porušují bezpečnostní požadavky softwaru. Když je systém nějak přesunut do stavu, který „nedává smysl“ při pohledu z pohledu zamýšleného stroje s konečným stavem (poškození paměti, selhání hardwaru nebo jiné programovací chyby), software bude pokračovat v transformaci poškozeného stavu do nové rozbité stavy, vyvolané dalším vstupem uživatele. Vzniká nové výpočetní zařízení: Podivný stroj, který může dosáhnout různých stavů CPU, než programátor očekával, a který tak činí v reakci na vstupy.

Aplikace

Funkčnost podivného stroje je vyvolána neočekávanými vstupy.

Zatímco se očekává, platný vstup aktivuje normální zamýšlenou funkčnost v a počítačový program, vstup, který program neočekával vývojář může aktivovat nezamýšlenou funkci. Divný stroj se skládá z této nezamýšlené funkce, která může být naprogramováno s vybranými vstupy v an využívat.

Při klasickém útoku s výhodou a přetečení vyrovnávací paměti zásobníku, vstup poskytnutý zranitelnému programu je vytvořen a doručen tak, aby byl sám spuštěn jako programový kód. Pokud jsou však datové oblasti paměti programu chráněny tak, aby byly nelze provést přímo takto, vstup může místo toho mít formu ukazatelů na kousky existujícího programového kódu, které se poté provedou v neočekávaném pořadí, aby se vygenerovala funkčnost exploitu. Tyto úryvky kódu, které využívá exploit, se označují jako gadgety v kontextu návratově orientované programování.

Interpretací dat jako kódu lze dosáhnout také podivné funkce stroje, která je podle definice mimo původní specifikaci programu kontrolní kód (PCC), u kterého bylo formálně prokázáno, že funguje určitým konkrétním způsobem.[3] Tato nerovnost je v zásadě způsobena rozpojením mezi formálním abstraktním modelováním počítačového programu a jeho skutečnou instancí, které může být ovlivněno událostmi, které nejsou zachyceny v původní abstrakci, jako jsou chyby paměti nebo výpadky napájení.

Zvláštní chování strojů lze pozorovat i v hardwaru. Ukázalo se například, že lze v x86 provádět výpočty pouze s instrukcemi MOV.[4]

Zmírnění

Dvě hlavní kategorie zmírnění problémů způsobených podivnou funkčností stroje zahrnují ověření vstupu v softwaru a ochranu před problémy vyplývajícími z platformy, na které program běží, jako jsou chyby paměti. Ověření vstupu má za cíl omezit rozsah a formy neočekávaných vstupů, např. prostřednictvím whitelistů povolených vstupů, aby samotný softwarový program neskončil v neočekávaném stavu interní interpretací dat. Stejně důležité je zabezpečit programovací postupy, jako je ochrana proti přetečení vyrovnávací paměti je méně pravděpodobné, že vstupní data budou neúmyslně interpretována nižšími vrstvami, jako je hardware, na kterém je program spuštěn.

Viz také

Reference

  1. ^ Bratus, Sergey; Locasto, Michael E .; Patterson, Meredith L .; Sassaman, Len; Shubina, Anna (prosinec 2011). „Exploit Programming - From Overflows Buffer to" Weird Machines "and Theory of Computation" (PDF). Přihlásit se.
  2. ^ Bratus, Sergey; Darley, Trey; Locasto, Michael E .; Patterson, Meredith L .; Shabiro, Rebecca; Shubina, Anna (leden 2014). „Beyond Planted Bugs in„ Trusting Trust “: The Input-Processing Frontier“. Zabezpečení a soukromí IEEE. 12: 83–87. doi:10.1109 / MSP.2014.1.
  3. ^ Vanegue, Julien (2014). „The Weird Machines in Proof-Carrying Code“ (PDF). Workshop IEEE Zabezpečení a soukromí LangSec: 209–213.
  4. ^ Stephen, Dolan. „mov je Turing-kompletní“ (PDF).