Minnessäkerhetsbrott är en vanlig orsak till både tillförlitlighet och säkerhetsbrister i systemprogramvara skriven på osäkra språk som C/C++. Tyvärr, alla befintliga mjukvarubaserade lösningar till detta problem uppvisar hög prestanda overheads hindrar dem från bred användning i produktionskörningar. För att ta itu med detta problem, Intel nyligen släppt en ny ISA extension-Memory Protection Extensions (Intel MPX), en hårdvarustödd full-stack lösning för att skydda mot brott minnessäkerhet. I detta arbete utför vi en uttömmande studie av Intel MPX arkitektur för att förstå dess fördelar och förbehåll. Vi baserar vår studie längs tre dimensioner: (a) prestanda overheads, (b) säkerhet garantier, och (c) användbarhet frågor. För att sätta våra resultat i perspektiv, jämför vi Intel MPX med tre framstående mjukvarubaserade metoder: (1) trip-wire-AdressSanitizer, (2) objektbaserad-SAFECode, och (3) pekarbaserad-SoftBound. Vår huvudsakliga slutsats är att Intel MPX är en lovande teknik som ännu inte är praktiskt för utbredd adoption. Intel MPX prestanda overheads är fortfarande hög (~50% i genomsnitt), och den stödjande infrastrukturen har buggar som kan orsaka sammanställning eller körtid fel. Dessutom visar vi upp konstruktionsbegränsningarna för Intel MPX: det kan inte upptäcka temporalfel, kan ha falska positiva och falska negativa i multitrådad kod, och dess begränsningar av minneslayout kräver betydande kodändringar för vissa program.
Även Intel MPX är en hårdvarustödd strategi speciellt utformad för att ge rumsliga minnessäkerhetsgarantier, är det inte snabbare än programvarubaserade metoder REF.
Intel MPX Explained: An Empirical Study of Intel MPX and Software-based Bounds Checking Approaches
{'venue': 'ArXiv', 'journal': 'ArXiv', 'mag_field_of_study': ['Computer Science']}