Compilere indfører sikkerhedshuller

Artiklen blev oprindeligt publiceret den 26/11/2013

Når en compiler anvender optimering, kan den fjerne sikkerhedsfunktioner i programkoden.

Det har et hold forskere fra MIT opdaget. De har analyseret, hvad optimering betyder for processen med at compilere et program.

Forskerne opdagede, at compilere i nogle situationer mener, at et stykke kode vil medføre udefineret opførsel. Når det sker, kan de finde på at udelade koden, fordi de regner med, at den alligevel aldrig vil blive udført.

Konsekvensen kan blive, at visse sikkerhedsfunktioner bliver fjernet. Det kan for eksempel være tjek for null-pointere eller bufferoverløb.

Forskerne anslår, at der er ustabil kode som følge af optimering i 40 procent af de programpakker til Debian Wheezy, som indeholder C- eller C++-kode.

De har udviklet et program, der kan opdaget ustabil kode i C- og C++-programmer. Programmet, Stack, kan hentes på deres websted.

Anbefaling
Systemudviklere bør sætte sig ind i problemerne med udefineret opførsel og de sikkerhedsmæssige konsekvenser.

Links