De rol van het vertrouwen in Computer Security
De rol van vertrouwen is cruciaal voor het begrijpen van de aard van computerbeveiliging. Artikelen huidige theorieën en mechanismen voor het analyseren en verbetering van computerbeveiliging, maar elke theorieën of mechanismen rusten op bepaalde aannames. Wanneer iemand de veronderstellingen haar veiligheidsbeleid, mechanismen en procedures rusten op begrijpt, zal ze hebben een zeer goed inzicht in hoe effectief dit beleid, mechanismen en procedures zijn. Laten we onderzoekt de gevolgen van deze stelregel. Een systeembeheerder ontvangt een beveiligingspatch voor de exploitatie van haar computer. Ze installeert. Heeft ze een verbetering van de veiligheid van haar systeem? Ze heeft inderdaad, gezien de juistheid van bepaalde veronderstellingen:
-
Ze is ervan uitgaande dat de pleister kwam van de verkoper en was niet geknoeid met in doorvoer, in plaats van een aanvaller probeerde haar te verleiden tot het installeren van een nep-patch die daadwerkelijk zou open gaten in de beveiliging.
-
Ze is ervan uitgaande dat de verkoper de geteste patch grondig. Verkopers zijn vaak onder grote druk om de patches probleem snel en soms te testen alleen tegen een bepaalde aanval. De kwetsbaarheid kan worden dieper, echter, en andere aanvallen kunnen slagen. Wanneer iemand een exploit uitgebracht van het besturingssysteem een verkoper code, de verkoper een corrigerende patch uitgebracht in 24 uur. Helaas, de patch opende een tweede gat, een die veel gemakkelijker te exploiteren. De volgende patch (48 uur later vrijgelaten) vaste beide problemen correct.
-
Ze is ervan uitgaande dat het testen van de verkoper milieu komt overeen met haar omgeving. Anders kan de patch niet werkt zoals verwacht. Als voorbeeld, een leverancier patch keer gereset eigendommen van uitvoerbare bestanden voor de gebruiker root. Op sommige installaties, onderhoud procedures vereist dat deze executables worden eigendom van de gebruiker bin. Patch De verkoper moest worden ongedaan gemaakt en vastgesteld voor de lokale configuratie. Deze veronderstelling heeft ook betrekking op mogelijke conflicten tussen de verschillende patches, evenals patches die in strijd zijn met elkaar (zoals pleisters van verschillende leveranciers van software die het systeem wordt gebruikt).
-
Ze is ervan uitgaande dat de pleister goed is geïnstalleerd. Sommige plekken zijn eenvoudig te installeren, omdat ze gewoonweg uitvoerbare bestanden. Anderen zijn complex, waarvoor de systeembeheerder opnieuw te configureren netwerk-georiënteerde eigenschappen, een gebruiker toevoegen, wijzigen de inhoud van een register, de rechten te geven aan een verzameling van gebruikers, en dan opnieuw opstarten van het systeem. Een fout in een van deze stappen kan de patch te voorkomen dat het corrigeren van de problemen, als zou een gebrek aan samenhang tussen de omgevingen waarin de patch is ontwikkeld en waarin de patch wordt toegepast. Bovendien kan de pleister beweren vereisen specifieke privileges, terwijl in werkelijkheid de voorrechten zijn onnodig en zelfs gevaarlijk
Deze veronderstellingen zijn vrij hoog niveau, maar ongeldig elk van hen maakt de patch een potentieel veiligheidsprobleem. Veronderstellingen ontstaan ook op een veel lager niveau. Denk formele verificatie, een vaak aangeprezen panacee voor veiligheidsproblemen. Het belangrijkste aspect is dat formele verificatie biedt een formele wiskundige bewijs dat een bepaald programma P correctthat is, gegeven een set van input i, j, k, het programma P zal de output x die de specificatie vereist. Deze mate van zekerheid is groter dan de meeste bestaande programma's bieden, en dus maakt P een wenselijke programma. Stel dat een security-gerelateerde programma S formeel is gecontroleerd voor het besturingssysteem O. Welke veronderstellingen zou worden gemaakt toen het werd geïnstalleerd?
-
De formele verificatie van S is correctthat is, het bewijs heeft geen fouten. Omdat de formele verificatie vertrouwt op geautomatiseerde bewijshulpmiddelen evenals menselijke analyse, moet de bewijshulpmiddelen correct worden geprogrammeerd.
-
De veronderstellingen die in de formele verificatie van S correct zijn; het bijzonder de voorwaarden houden in de omgeving waarin het programma moet worden uitgevoerd. Deze voorwaarden zijn meestal gevoed aan de bewijshulpmiddelen evenals het programma S. Een aspect van deze impliciete veronderstelling is dat de versie van O in de omgeving waarin het programma moet worden uitgevoerd is hetzelfde als de versie van O gebruikt om te controleren S.
-
Het programma zal worden omgezet in een uitvoerbaar waarvan de acties komen overeen met die welke door de bron code, met andere woorden, de compiler, linker, lader, en alle bibliotheken juist zijn. Een experiment met een versie van het UNIX-besturingssysteem laten zien hoe een verwoestende opgetuigd compiler kan worden, en aanvallers hebben bibliotheken met anderen vervangen dat de uitgevoerde extra functies, waardoor de veiligheidsrisico's.
-
De hardware zal het programma uitvoeren zoals gepland. Een programma dat is gebaseerd op floating point berekeningen onjuiste resultaten zou opleveren op een aantal chips computer CPU, ongeacht de formele verificatie van het programma, als gevolg van een fout in deze chips. Ook een programma dat is gebaseerd op input van hardware gaat ervan uit dat specifieke voorwaarden veroorzaken die ingangen
Het punt is dat ieder veiligheidsbeleid, mechanisme of procedure is gebaseerd op veronderstellingen die, indien onjuist, vernietigen de bovenbouw waarop het is gebouwd. Analisten en ontwerpers (en gebruikers) moet hiermee rekening te houden, want als ze begrijpen wat het veiligheidsbeleid, mechanisme, of-procedure is gebaseerd op, ze springen van een onterechte aanname tot een onjuiste conclusie.
een artikel afkomstig van Meden Reece
|