science >> Wetenschap >  >> Elektronica

Automatische isolatie van apparaatstuurprogramma's beschermt tegen bugs in besturingssystemen

Krediet:Pixabay/CC0 Publiek domein

De kernel van een besturingssysteem fungeert als vertaler tussen gebruiker en machine. Om de betrouwbaarheid van een kernel te verbeteren, kunnen ontwikkelaars de apparaatstuurprogramma's van het besturingssysteem isoleren en voorkomen dat een storing in één component andere componenten beïnvloedt. Isolatie vereist echter onpraktische hoeveelheden menselijke inspanning.

Een team van onderzoekers, onder leiding van G. Gary Tan en Trent Jaeger, professoren informatica en engineering aan Penn State, wilde een raamwerk ontwikkelen dat de hoeveelheid handmatig werk dat nodig is voor isolatie van apparaatstuurprogramma's in aanwezigheid van uitdagende kernelpatronen.

De onderzoekers presenteerden hun raamwerk op het 16e USENIX Symposium on Operating Systems Design and Implementation (OSDI '22), dat plaatsvond van 11-13 juli in Carlsbad, Californië. OSDI is een vooraanstaande conferentie in onderzoek naar besturingssystemen en brengt professionals met academische en industriële achtergronden samen om het ontwerp, de implementatie en de implicaties van systeemsoftware te bespreken, aldus de website.

De kernel van het besturingssysteem bestuurt en coördineert alle hardware en software op de computer. Met apparaatstuurprogramma's kan de kernel communiceren met hardware zonder de details van het onderdeel te kennen. Wanneer een gebruiker bijvoorbeeld zijn computer opdracht geeft om een ​​document af te drukken, roept de kernel bepaalde interfacefuncties op die worden geleverd door een printerstuurprogramma, dat de gegevens verwerkt en de taak naar de printer stuurt.

Volgens Tan moesten ontwikkelaars, om apparaatstuurprogramma's effectief te isoleren en de communicatie tussen kernelstuurprogramma's in stand te houden, de grote en complexe communicatie-interface tussen een stuurprogramma en de kernel inspecteren en beslissen welke gegevens moesten worden gesynchroniseerd door alle interacties tussen het stuurprogramma en de kernel te onderzoeken. kern. Ze moesten ook omgaan met uitdagende synchronisatiepatronen, zoals gelijktijdigheid van gegevens, het schrijven van duizenden regels code om de operaties soepel te laten verlopen.

"Isolatie is een effectieve techniek om de betrouwbaarheid van softwaresystemen, zoals de kernel, te verbeteren, maar het is onrealistisch om te vertrouwen op menselijke inspanning om stuurprogramma's te isoleren, dus wilden we een raamwerk ontwikkelen om het proces te automatiseren," zei Tan. "Met isolatie wordt storing in één component beperkt binnen het eigen domein; bugs in één component kunnen de rest van het systeem niet direct beïnvloeden. Dit verbetert de betrouwbaarheid aanzienlijk."

Ze ontwikkelden KSplit, een aanpak die zowel automatisch de status van de gedeelde driver-kernel kan analyseren als de synchronisatiebehoeften voor alleen deze gedeelde status kan berekenen. Het programma identificeert ook gebieden die handmatig moeten worden ingegrepen, waardoor de handmatige werklast wordt teruggebracht tot minimale codering en datamarshaling.

"Vóór KSplit was het proces arbeidsintensief en foutgevoelig," zei Tan. "Met KSplit worden de meeste van deze gecompliceerde isolatietaken automatisch afgehandeld."

De onderzoekers evalueerden de oplossing met 354 device drivers op negen subsystemen in een Linux-kernel. Voor één complexe driver vereiste KSplit handmatige updates van 53 van de 2.476 regels code, die automatisch gegenereerde interfacespecificaties waren, en 19 aanvullende wijzigingen in de drivercode. Dat is minder dan 3% van het handmatige werk dat nodig is zonder KSplit.

"De KSplit-analyse van de 354 chauffeurs laat zien dat er een vergelijkbare fractie van handmatig werk wordt verwacht, wat aantoont dat KSplit een praktisch hulpmiddel is voor het automatiseren van belangrijke taken om isolatie van de bestuurder mogelijk te maken," zei Jaeger. "Het raamwerk is echter voornamelijk gericht op het verbeteren van de systeembetrouwbaarheid. We zijn van plan om KSplit uit te breiden om de interface tussen de kernel en een stuurprogramma te versterken, met een veiligheidsgarantie voor de kernel, zelfs in de aanwezigheid van een kwaadaardig stuurprogramma."

Volgens Jaeger kan de reeks statische analyses die door KSplit worden geleverd, zoals het berekenen van noodzakelijke gegevens tussen verschillende systeemonderdelen, worden uitgebreid tot software die een nauwkeurige analyse van gegevenstoegangsinformatie vereist, waarbij het potentieel voor bescherming tegen opzettelijke beveiligingsinbreuken of andere aanvallen wordt benadrukt. . + Verder verkennen

Een kern van waarheid benaderen