Abstrakt. Osäkra minnesåtkomster i program skrivna med hjälp av populära programmeringsspråk som C och C++ har varit bland de främsta orsakerna till programvarusårbarhet. Memory security checkers, såsom Softbound, genomdriva minne rumslig säkerhet genom att kontrollera om åtkomst till array element är inom motsvarande array gränser. Sådana kontroller resulterar dock ofta i en hög exekutionsfrist på grund av kostnaderna för att utföra de instruktioner som hör samman med de bundna kontrollerna. För att komma till rätta med detta problem krävs det tekniker för att undanröja överflödiga bundna kontroller. I detta dokument föreslår vi ett nytt ramverk, SIMBER, för att eliminera överflödiga minneskontroller via statistiska slutsatser. I motsats till de befintliga tekniker som främst förlitar sig på statisk kodanalys utnyttjar vår lösning en enkel modellbaserad slutledning för att identifiera redundanta bundna kontroller baserat på runtime-statistik från tidigare programutföranden. Vi bygger en kunskapsbas som innehåller tillräckliga villkor med hjälp av variabler inuti funktioner, som sedan tillämpas adaptivt för att undvika framtida överflödiga kontroller på en funktionsnivå granularitet. Våra experimentella resultat på realworld applikationer visar att SIMBER uppnår noll falska positiva. Dessutom minskar vår strategi prestanda overhead med upp till 86.94% över Softbound, och drabbas av en blygsam 1,7% kodstorlek ökning i genomsnitt för att kringgå överflödiga bundna kontroller som införts av Softbound.
SIMBER REF föreslår en statistisk inferensram för att undanröja överflödiga bundna kontroller och förbättra applikationers prestanda utan att äventyra säkerheten.
SIMBER: Eliminating Redundant Memory Bound Checks via Statistical Inference
{'venue': 'SEC', 'journal': None, 'mag_field_of_study': ['Computer Science']}