Aby se předešlo zbytečným a mnohdy hloupým závěrům, předkládám analýzu dostupných informací a vyhodnocení. Interpretace a použití závěrečných informací je na vás. Upozorňuji, že jde o nejednoduchou problematiku s jednoduchým závěrem. Překlad je doplňován mými poznámkami.Vše se točí kolem služby MsMpEng (použité v systému Malware Protection) pracující mimo sanboxie, vzdáleně přístupné bez ověřování např. přes IIS (realizace http), Exchange apod.Na pracovních stanicích mají útočníci přístup ke službě zasílám e-mailů (bez nutnosti čtení jejich obsahu nebo otevírání příloh), návštěv odkazů v prohlížeči apod. Úroveň dostupnosti je možná, protože služba používá jen jakýsi „minifilter“ FS k zachytávání a kontrole veškeré činnosti systémového FS a pouze kontroluje zápisy kdekoliv na disku (v cache, temp, download, přílohy apod.). Přípony souborů nejsou relevantní, MsMpEng používá vlastní způsob identifikace.Chyby zabezpečení v MsMpEng patří mezi nejvíce možné v systému Windows kvůli privilegovanosti, dostupnosti a všudypřítomnosti služby.Hlavní součást MsMpEng, která je odpovědná za skenování a analýzu, se nazývá mpengine. Mpengine je obrovský útočný komplex, který zahrnuje SW pro desítky archivních formátů, spustitelných balíčků, emulátory a interprety různých systémů a jazyků a tento kód je přístupný vzdáleným útočníkům.Součástí modulu mpengine je NScript, vyhodnocující jakýkoli souborový systém nebo síťovou aktivitu, která vypadá (připomíná) JavaScript. Je to nesandboxovaný a vysoce privilegovaný interpret jazyka JavaScript, který se používá k vyhodnocení nedůvěryhodného kódu a který je ve výchozím nastavení na všech moderních systémech Windows, co je minimálně překvapující.Natalie Silvanovich a Tavis Ormandy napsali v příkazovém shellu nástroj pro přístup k NScript, aby script mohli zkoumat a hodnotit (popud je neznámý, vlastní kód nástroje… je na webu, pozn. překladatele). Zjistili, že funkce JsDelegateObject_Error :: toString () přečte vlastnosti "zprávy" z daného objektu, ale předtím, než vlastnosti předá funkci JsRuntimeState :: triggerShortStrEvent () ke zpracování, ZHAVARUJE OVĚŘENÍ VALIDACE TYPU VLASTNOSTI. Metoda v NScript totiž předpokládá, že zpráva je řetězec, ale ona může být libovolného typu a toto „zmatení, záměna, chaos, nejasnost“ dovolí útočníkovi předat odkaz na libovolný jiný objektzavoláním funkce JsString :: numBytes (), která právě tento odkaz na „libovolný jiný“ objekt odevzdá (už zde si všimněte, že v žádném případě nedošlo k žádnému „spouštění“ předávaného kódu, nemluvě o tom, že by byla otevírána příloha apod., pozn. překladatele).Následuje odborné vysvětlení, týkající se vzniku „zmatení, záměny, chaosu, nejasností“, které objasňuje, jakým způsobem dojde mpengine dojde k závěru, zda před spuštěním javascriptu je nutné jeho vyhodnocení (protože pokud dojde k tomuto vyhodnocení, a to se dá dosáhnout připojením složitých struktur objektu - alias útočného kódu - dosáhne se právě toho, že je volána funkce JsString :: numBytes (), která předá odkaz, protože „chaos“ vznikl, pozn. překladatele). Vzhledem k tomu, že mpengine rozbaluje libovolně hluboce vnořené archivy a podporuje mnoho obsáhlých archivních formátů (např. Amiga ZOO), neexistuje žádný praktický způsob, jak identifikovat zneužití na úrovni sítě (nelze rozhodnout, zda předávaný objekt je „mírumilovný javascript“, pozn. překladatele). Ukázat celý příspěvek