Vi föreslår ett nytt formellt kriterium för att utvärdera säkra sammanställningssystem för osäkra språk, som uttrycker end-to-end säkerhetsgarantier för programvarukomponenter som kan äventyras efter att stöta på odefinierade beteende-till exempel, genom att få tillgång till en rad utanför gränserna. Vårt kriterium är det första att modellera dynamiska kompromisser i ett system av ömsesidigt misstrogna komponenter med tydligt angivna privilegier. Den uttrycker hur varje komponent bör skyddas från alla andra-i synnerhet, från komponenter som har stött på odefinierat beteende och blir komprometterad. Varje komponent får säkra samlingsgarantier-i synnerhet, dess interna invarianter skyddas från komprometterade komponenter upp till den punkt när denna komponent själv blir komprometterad, varefter vi antar att en angripare kan ta fullständig kontroll och använda denna komponents privilegier för att attackera andra komponenter. Mer exakt, en säker sammanställning kedja måste se till att en dynamisk äventyras komponent inte kan bryta säkerhetsegenskaperna i systemet på målnivå lika mycket som en godtycklig angripare kontrollerad komponent (med samma gränssnitt och privilegier, men utan odefinierade beteenden) redan kunde på källnivån. För att illustrera modellen konstruerar vi en säker samlingskedja för ett litet osäkert språk med buffertar, procedurer och komponenter som riktar sig till en enkel abstrakt maskin med inbyggd kompartmentalisering. Vi ger ett noggrant bevis (främst maskinkontrollerad i Coq) på att denna kompilator uppfyller vårt säkra samlingskriterium. Slutligen visar vi att de skyddsgarantier som erbjuds av den delade abstrakta maskinen kan uppnås på maskinkodsnivå med hjälp av antingen programvarufelisolering eller en taggbaserad referensmonitor. Detta verk är licensierat under en Creative Commons Erkännande 4.0 internationell licens. Alla uppdaterade versioner kommer att finnas tillgängliga på https://arxiv.org/abs/1802.00588
Abate m.fl. REF study compartmentalized komponenter och föreslår hur enskilda komponenter bör skyddas från andra även om de blir komprometterade på grund av odefinierat beteende.
When Good Components Go Bad: Formally Secure Compilation Despite Dynamic Compromise
{'venue': "CCS '18", 'journal': None, 'mag_field_of_study': ['Computer Science']}