De ontwikkelaars van het Grsecurity-project een leerzaam verhaal dat aantoont hoe ondoordachte verwijdering van compiler waarschuwingen kan leiden tot kwetsbaarheden in de code. Eind mei werd er een patch voorgesteld voor de Linux-kernel om een nieuwe exploit vector van de Spectre-kwetsbaarheid via de systeemaanroep ptrace op te lossen.
Tijdens het testen van de patch merkten de ontwikkelaars op dat de compiler een waarschuwing gaf over het mengen van code en definities (de structuur was gedefinieerd na de code die een waarde aan een bestaande variabele toekende):
int index = n;
if (n ptrace_bps[index];
Linus nam in zijn master-tak, if (n ptrace_bps[index];
In juli werd de patch ook naar de stabiele takken van de kernels 4.4, 4.9, 4.14, 4.19 en 5.2 overgebracht. Onderhouders van de stabiele takken stuitten ook op de waarschuwing en in plaats van te controleren of deze al was opgelost in Linus' master-tak, maakten ze zelf een aanpassing. Het probleem is dat ze, zonder er goed over na te denken, gewoon
de definitie van de structuur naar boven verplaatsten, zodat de aanroep van array_index_nospec, die de bescherming tegen de kwetsbaarheid bood, niet meer werd gebruikt bij de definitie van de structuur, en in plaats van de variabele "index" altijd de variabele "n" werd gebruikt: index = array_index_nospec(index, HBP_NUM);
int index = n;
De ontwikkelaars van het Grsecurity-project deelden een leerzaam verhaal dat aantoont hoe ondoordacht.
🥇Ondoordacht herstel leidde tot een onvolledige oplossing van de Spectre-kwetsbaarheid in de Linux-kernel | ProHoster
Bron: opennet.ru
