Flere Linux-brukere har på Linux-kernel Mailing List (LKML) meldt om en feil i kjernen som skal muliggjøre DoS-angrep (Denial of Service). Ifølge innsenderne kan hvilken som helst Linux-bruker krasje maskinen Linux kjører på, det vil si at maskinen foretar en omstart. Brukerne behøver ikke å ha spesielle rettigheter for å få dette til.
For å replikere feilen må brukeren utføre ldd-kommandoen på en hvilken som helst core-fil. Linux skal da svare at det ikke kan få tillatelse til å eksekvere ./core og deretter gjennomføre omstarten.
Såvidt innsenderne vet, påvirker denne feilen kun x86-baserte maskiner, PowerPC-baserte maskiner skal være uberørte. Samtidig er det også flere brukere av x86-baserte maskiner som ikke greier å replikere feilen. Alt dette tyder på at feilen er maskinvareavhengig.
Forklaringen på hvorfor Linux ikke greier å utføre denne kommandoen skal ifølge en innsender være at munmap()-prosedyren gjør en anelse mer arbeid enn nødvendig og dermed dreper hele sidetabellplassen til 0xc0000000. Dette skal være en temmelig vital del med 4 MB virtuelt minnerom i Linux.
Feilen skal også opptre i Linux 2.2.0ac1, men kun hvis core-filen har rettighetene satt til 600.
Nå har Linux den fordelen av enhver bruker kan gjøre de endringen i programvaren han eller hun måtte ønske. Det er derfor mulig for brukerne av Linux 2.2.0 å rette denne feilen før en feilfiks kommer. Riktignok er det allerede kommet en patch til Linux som oppgrader kjernen til 2.2.1, men denne skal kun inneholde endringer i koden som brukes av Alpha-prosessoren, oppdateringer av støtten for lydkort og filsystemet NFS (Network File System) samt noen små feilfikser i forbindelse med minneforvaltningen.
Patchen kan blant annet hentes ned fra nettstedet The Linux Kernel Archive. Se peker nedenfor eller i spalten til høyre.
Derfor må brukere av Linux 2.2.x foreløpig rette feilen i koden på egenhånd. Oppskriften stammer fra LKML og er ikke testet av digi.no. Eventuell bruk av denne oppskriften gjøres derfor på egen risiko, selv om risikoen sannsynligvis er ikke-eksisterende. Det er jo bare å gjøre om endringen hvis det eventuelt skulle oppstå problemer.
Endringen gjøres i filen linux/mm/mmap.c, linje 558:
unsigned long start, unsigned long end)
{
unsigned long first = start & PGDIR_MASK;
unsigned long last = (end & PGDIR_MASK) + PGDIR_SIZE;
Den siste linjen erstattes med det følgende:
unsigned long last = ((end-1) & PGDIR_MASK) + PGDIR_SIZE;
if (!prev) {
prev = mm->mmap;
Linus Torvalds med flere er blitt varslet om dette, men foreløpig er det ikke kommet noen kommentarer fra den kanten.