Het artikel bespreekt het risico dat veilige C-broncode resulteert in kwetsbare binaire bestanden door compiler-optimalisaties. Beveiligingsonderzoeker Chris Domas legt uit hoe legale transformaties door de compiler kunnen leiden tot het verwijderen van geheugenwissingen of het introduceren van time-of-check to time-of-use (TOCTOU) kwetsbaarheden.
Belangrijke punten uit het artikel:
Oorzaken: Factoren zoals registerdruk, structuurindeling en datagrootte beïnvloeden de uiteindelijke veiligheid van de code.
Onderzoek: Met behulp van AI zijn 300 potentieel gevaarlijke patronen geïdentificeerd in 500 miljoen regels open-source code.
Preventie: Ontwikkelaars wordt aangeraden om compiler-waarschuwingen in te schakelen, sanitizers te gebruiken, geoptimaliseerde builds te analyseren en het uiteindelijke binaire bestand te testen.
Je compiler kan je beveiligingscontroles ongedaan maken
Hoe optimalisaties kwetsbaarheden introduceren
In een gesprek tijdens Black Hat legt beveiligingsonderzoeker Chris Domas uit hoe legale compiler-optimalisaties beveiligingsmaatregelen kunnen verwijderen, operaties voor het wissen van geheugen kunnen deleten en time-of-check to time-of-use (TOCTOU) kwetsbaarheden kunnen introduceren in code die op het eerste gezicht veilig lijkt.
Chris bespreekt hierbij de abstracte machine van C, de redenen waarom compilers code zo drastisch mogen transformeren en de impact van factoren zoals registerdruk, structuurindeling en datagrootte op de veiligheid van een binair bestand. Een opvallend voorbeeld is dat code met een grootte van 17 of 33 bytes veilig kan zijn, terwijl nabijgelegen groottes juist kwetsbare code produceren.
Analyse en preventie
Tijdens de analyse werd ook gekeken naar alternatieven en tools:
Talen en Compilers: Er is besproken of Rust dit probleem oplost en waarom het simpelweg switchen tussen GCC en Clang geen volledige oplossing is.
AI-onderzoek: Er is AI ingezet om 500 miljoen regels open-source code te analyseren, waarbij 300 potentieel gevaarlijke patronen zijn geïdentificeerd.
Aanbevelingen voor ontwikkelaars
Om de risico's van compiler-optimalisaties te beperken, adviseert Chris ontwikkelaars de volgende stappen te ondernemen:
Schakel compiler-waarschuwingen in.
Maak gebruik van sanitizers.
Analyseer geoptimaliseerde builds.
Test het exacte binaire bestand dat daadwerkelijk wordt verzonden (shipped).
Je kunt veilige C-code schrijven en de algemeen aanvaarde best practices volgen, maar toch eindigen met een kwetsbaar binair bestand. De reden hiervoor is simpel: de CPU voert niet jouw broncode uit, maar voert uit wat de compiler produceert.
Je compiler kan je beveiligingscontroles ongedaan maken
Hoe optimalisaties kwetsbaarheden introduceren
In een gesprek tijdens Black Hat legt beveiligingsonderzoeker Chris Domas uit hoe legale compiler-optimalisaties beveiligingsmaatregelen kunnen verwijderen, operaties voor het wissen van geheugen kunnen deleten en time-of-check to time-of-use (TOCTOU) kwetsbaarheden kunnen introduceren in code die op het eerste gezicht veilig lijkt.
Chris bespreekt hierbij de abstracte machine van C, de redenen waarom compilers code zo drastisch mogen transformeren en de impact van factoren zoals registerdruk, structuurindeling en datagrootte op de veiligheid van een binair bestand. Een opvallend voorbeeld is dat code met een grootte van 17 of 33 bytes veilig kan zijn, terwijl nabijgelegen groottes juist kwetsbare code produceren.
Analyse en preventie
Tijdens de analyse werd ook gekeken naar alternatieven en tools:
Talen en Compilers: Er is besproken of Rust dit probleem oplost en waarom het simpelweg switchen tussen GCC en Clang geen volledige oplossing is.
AI-onderzoek: Er is AI ingezet om 500 miljoen regels open-source code te analyseren, waarbij 300 potentieel gevaarlijke patronen zijn geïdentificeerd.
Aanbevelingen voor ontwikkelaars
Om de risico's van compiler-optimalisaties te beperken, adviseert Chris ontwikkelaars de volgende stappen te ondernemen:
Schakel compiler-waarschuwingen in.
Maak gebruik van sanitizers.
Analyseer geoptimaliseerde builds.
Test het exacte binaire bestand dat daadwerkelijk wordt verzonden (shipped).
Zichtbare categorieën
Kies welke categorieën je wilt zien.
Over deze site
Waarom Tech-update?
Tech-update is ontstaan omdat ik merkte dat ik dagelijks veel verschillende websites moest bezoeken om interessant technieuws te vinden. Dat kon efficiënter.
Hoe werkt het?
Meerdere keren per etmaal gaat mijn zelfgebouwde AI-agent op zoek naar interessante artikelen op blogs en nieuwssites.
Vindt hij iets relevants, dan wordt het artikel naar het Nederlands vertaald en op Tech-Update geplaatst.
Van ieder artikel maakt de AI ook een korte samenvatting. Zo kun je snel bepalen of het de moeite waard is om het volledige artikel te lezen.
Bij ieder artikel staat altijd een link naar de oorspronkelijke bron (vaak een Engelstalige website).
Artikelen kun je bewaren als favoriet, vastzetten in de zijbalk of terugvinden via de zoekfunctie.
In de instellingen (tandwielikoon rechtsboven) geef je aan in welk soort nieuws je geïnteresseert bent.