Abstract-Många mekanismer har föreslagits och använts för att förhindra utnyttjanden mot mjukvarusårbarheter. Bland dem är W på X en av de mest effektiva och effektiva. W på X förhindrar minnessidor från att vara samtidigt skrivbara och körbara, vilket gör årtionden gamla shellcode injektionsteknik ogenomförbar. I detta dokument visar vi att den traditionella injektionsattacken med skalkod kan återupplivas genom en injiceringsteknik med kodcache. Specifikt, dynamisk kodgenerering, en teknik som ofta används i just-in-time (JIT) sammanställning och dynamisk binär översättning (DBT), genererar och ändrar kod i farten för att främja prestanda eller säkerhet. De dynamiskt genererade kodfragmenten lagras i en kodcache, som är skrivbar och körbar antingen samtidigt eller växelvis, vilket resulterar i en möjlighet till utnyttjande. Detta hot är särskilt realistiskt när den genererade koden är flertrådig, eftersom byte mellan skrivbara och körbara lämnar ett tidsfönster för utnyttjande. För att illustrera detta hot har vi skapat en proofof-concept utnyttja mot moderna webbläsare som stöder Web Workers. För att minska detta cacheinjiceringshot föreslår vi en ny dynamisk kodgenereringsarkitektur. Denna nya arkitektur flyttar den dynamiska kodgeneratorn till en separat process där kodcachen är skrivbar. I den ursprungliga processen där den genererade koden körs, förblir kodcachen skrivskyddad. Kodcachen synkroniseras över skrivprocessen och exekveringsprocessen genom delat minne. Växelverkan mellan kodgeneratorn och den genererade koden hanteras på ett transparent sätt genom fjärrsamtal (RPC). Vi har anpassat Google V8 JavaScript-motorn och Strata DBT till denna nya arkitektur. Vår erfarenhet av genomförandet visade att ingenjörsarbetet för anpassning till denna nya arkitektur är minimalt. Utvärdering av vår prototyp implementering visade att denna nya arkitektur kan besegra koden cache injicering attack med små prestanda overhead.
Parallellt med detta arbete visar Song et al Ref att JIT-buffertar kan utnyttjas genom insprutningsteknik för kodcache.
Exploiting and Protecting Dynamic Code Generation
{'venue': 'NDSS', 'journal': None, 'mag_field_of_study': ['Computer Science']}