Har eksisteret siden 2007: Kernel-sårbarhed i Linux giver root-adgang

En sårbarhed i Linux-kernen muliggør rettighedseskalering.

Dirty Cow er en nyopdaget sårbarhed i Linux-kernen, der har eksisteret siden 2007.

Den gør det via rettighedseskalering muligt for applikationer - eksempelvis ondsindet kode sneget ind på systemet - at opnå root-adgang. Det fortæller The Register i en detaljeret gennemgang af sårbarheden.

Kodefejlen, som ligger bag sårbarheden, befinder sig i copy-on-write-mekanismen (deraf navnet Dirty Cow), som ligger i Linux-kernen. Fejlen bevirker, at programmer via en race-condition i sidste ende kan ændre på setuid (set user ID upon execution) og ændre i filer ejet af root. Og herfra er det 'game over,' som The Register formulerer det.

Mediet bemærker, at fejl, der tillader rettighedseskalering i sig selv ikke er usædvanlige.

Microsoft fikser den slags problemer i Windows på en nærmest månedlig basis. Den nuværende Linux-bug kan dog vise sig mere end almindelig træls.

Den har eksisteret siden 2007, og den skulle være let at udnytte. Ifølge The Register befinder den sig blandt andet i Android-styresystemet, som kører Linux-kernen. Og så kører adskillige andre enheder - som f.eks. routere - som bekendt også Linux, og de bliver ikke nødvendigvis opdateret sådan lige med det samme - hvis nogensinde.

I den forbindelse så skulle kode, der udnytter fejlen, ifølge The Register blive anvendt in-the-wild - altså i den virkelige verden - til at opnå administrative rettigheder på enheder med internetadgang.

PoC

Der ligger et ikke-fuldstændigt proof-of-concept i forhold til sårbarheden på GitHub.

Linux-boss Linus Torvald indrømmede tidligere på ugen, at han uden held havde forsøgt at fikse problemet for 11 år siden. Og så lod han det ligge, fordi det dengang var vanskeligere at udnytte sårbarheden på daværende tidspunkt.

Siden da har design-ændringer i Linux-kernen betydet, at fejlen i dag er nemmere at udnytte i ondsindet sammenhæng.

Ifølge et web-site om Dirty Cow-sårbarheden, er der udviklet en patch, som skulle være frigivet til store Linux-distributioner som Red Hat, Debian og Ubuntu.

Men som nævnt, og som The Register bemærker, findes Linux jo i et utal af enheder verden over, der er på internettet, og som ikke nødvendigvis lige får en opdatering.

Læs hele artiklen hos The Register, hvor der også er en nærmere gennemgang af, hvad problemet med copy-on-write-implementeringen nærmere bestemt bunder i.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Følg forløbet
Kommentarer (17)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Bent Jensen

Som jeg ikke synes det fremgår klart af artiklen.
Er det misbrugt, og kan det misbruges ?

På Routerer og andre dimser. Vil det at der ikke kommer nye opdateringer, jo også betyde at der ikke bliver installeret nyt software, så det bider lidt sig selv i halen.

Nu fejlen er ude i det åben, vil den nok blive rettet på distributioner. Den farligste ting er nok til Android telefoner, hvor der ikke kommer opdateringer. Men hvor der stadig bliver installere nyt software. Også fra 3 part uden om sikkerheden som også Play butik er en del af.

Men meget "sjovt" at se den første rigtige sikkerhedsfejl i Linux i over 10 år. over, Windows får dem jo ifølge samme artikkel måendeligt.

Men der er nok nogen her som kan give et helt korrekte svar på det ?

  • 6
  • 13
Rune Jensen

Men der er nok nogen her som kan give et helt korrekte svar på det ?

Jeg synes måske, du stiller det en anelse firkantet op.

Uanset, jeg selv er linux-bruger, så er jeg mere end noget andet realist, og det falder mig svært at tro på, at der i ti år skulle være skrevet absolut fuldkommen kode til linux kernal, men ikke til windows. Det virker som en ret fantastisk påstand.

Jeg har lid tlettere ved at tro på for eksempel, at fejl raten er nogenlunde ens, men at der er mere fokus på windows fordi det har flere brugere, derfor også findes flere fejl der.

Men der kan selvfølgelig også være andre forklaringer end det. Nu taler jeg bare om, hvad jeg synes lyder sandsynligt eller ej.

  • 9
  • 1
Morten Jensen

Det er ligegyldigt for routere osv., eftersom det kræver lokal adgang for at kunne udnytte fejlen - hvor mange farlige hackere har en shell på din router?
Hvis du installerer en ondsindet android-app er du måske i farezonen -- nåhja hvaeeh...

Den her bug har relevans for nærmest ALT ANDET end routere, sådan som jeg ser det.

  • 6
  • 0
Jørgen Henningsen

Uanset, jeg selv er linux-bruger, så er jeg mere end noget andet realist, og det falder mig svært at tro på, at der i ti år skulle være skrevet absolut fuldkommen kode til linux kernal, men ikke til windows. Det virker som en ret fantastisk påstand.


Det er jo heller ikke hele sandheden. Microsoft begyndte faktisk først med windows 7 (fra 2009) at arbejde på egentlig systemsikkerhed (serversystemer undtaget). Før windows 7 kørte de stort set udelukkende med en antivirus sikkerhedsmodel. Linux har, så vidt jeg ved, haft systemsikkerhed lige siden det startede i 1991. Med et forspring på ca. 18 år er det klart, at linux har bedre sikkerhed.

  • 3
  • 5
Christoffer Kjeldgaard

Den her bug har relevans for nærmest ALT ANDET end routere, sådan som jeg ser det.

Jeg er ikke så sikker på at du har ret. Hvis der er et relativt pålideligt remote code-execution bug i noget af det uopdaterede software du har kørende på din router - ja så er det game over. I kombination med dette bug kan en angriber relativt sikkert opnå root fordi Dirty Cow-angreb har en relativ pålidelig succesrate.

Privilege escalation bugs er normalvis upålidelige; det er ikke tilfældet her.

  • 2
  • 1
Sune Marcher

Det er jo heller ikke hele sandheden. Microsoft begyndte faktisk først med windows 7 (fra 2009) at arbejde på egentlig systemsikkerhed (serversystemer undtaget). Før windows 7 kørte de stort set udelukkende med en antivirus sikkerhedsmodel. Linux har, så vidt jeg ved, haft systemsikkerhed lige siden det startede i 1991. Med et forspring på ca. 18 år er det klart, at linux har bedre sikkerhed.


Sikke da en omgang vås. Microsoft har haft ret omfattende ACL-baseret systemsikkerhed på NT i evigheder. At der har været problemer med kodekvalitet samt en årti-lang periode med rigtigt kedelig reaktion på henvendelser om sikkerhed, samt at de ikke tog internettet og dets udfordringer seriøst, er en anden sag.

På Linux-siden kunne man ønske sig en "leder" der var lidt mere ansvarlig når det kommer til sikkerhed - det har været ret meget op af bakke for grsecurity og PaX folkene.

  • 7
  • 0
Rune Jensen

Sikke da en omgang vås. Microsoft har haft ret omfattende ACL-baseret systemsikkerhed på NT i evigheder.

Men vel ikke så relevant ifht.artiklen, hvilken sikkerhedsprocedure og -eller standard, som man i terorien programmerer efter?

At der har været problemer med kodekvalitet samt en årti-lang periode med rigtigt kedelig reaktion på henvendelser om sikkerhed, samt at de ikke tog internettet og dets udfordringer seriøst, er en anden sag.

Nej-nej, netop kodekvalitet er topic.

Man kan have - i teorien, på papiret - den allerhøjeste standard for et OS' sikkerhed, men det hjælper vel ikke meget, hvis så man, når man programmerer og implementerer den standard i kernal, laver mange programmeringsfejl, som kan udnyttes udenom den sikkerhedsstandard.

Det gælder for både Linux og Windows kernal, at sikkerhedsstandarden man implementerer ikke er bedre end de programmører som implementerer den/programmerer den.

I stedet for at kigge på, hvor mange fejl der er fundet indtil nu, som kan være en del anderledes ifht. hvor mange der reelt er og hvor sårbare de er, burde man gennemgå programmeringen af hver kernal og så sammenligne, hvor god kodekvaliteten er i hver ifht. hinanden. Først derefter vil det være interessant, hvilken sikkerhedsstandard hvert OS følger.

Altså, et OS med en middel sikkerhedsstandard, men ingen kodefejl, vil ikke nødvendigvist være ringere end et OS implementeret efter højere sikkerhedsstandard, men mange kodefejl. Hvad nytte er for eksempel en sand box til, hvis man nemt kan hoppe ud af den ved at udnytte en bug?

  • 1
  • 2
Jørgen Henningsen

NT er basis for alle moderne Windows-versioner, på consumer-siden er det XP og fremefter.


Ja nemlig, udviklingen mod systemsikkerhed (i mainstream windows) startede med XP og blev udbygget i Win7.
Noget helt andet er repository tankegangen. Næsten alt hvad jeg bruger på min Linux Mint henter jeg fra kontrollerede kilder. Det er muligvis lidt ældre versioner, men det er super nemt (og hurtigt) at afprøve forskellige programmer uden risikoen for at få fat i noget fra det åbne net, som er befængt med malware.
Men ok, nu kommer der fokus på denne sårbarhed og forhåbentligt bliver den rettet hurtigt. Det er vel ikke så dårligt.

  • 0
  • 0
Ole Jørgensen

Denne type sårbarhed er ikke så kritisk for routere og lign. som kører Linux.

Der er ikke tale om en sårbarhed hvor udefrakommende kan overtage kontrollen med din router, men hvis der i forvejen kan eksekveres kode på systemet vil denne sårbarhed kunne bruges til at få root adgang.

I forbindelse med routere og andre embedded devices er root ofte den eneste bruger på systemet, så denne sårbarhed vil ikke gøre nogen forskel da alle programmer alligevel har root rettigheder.

  • 4
  • 0
Sune Marcher

Nej-nej, netop kodekvalitet er topic.


Rune, kodekvalitet er bestemt on-topic i forhold til artiklen, men det er en anden sag end systemarkitektur og sikkerhedsmodel.

Du har for så vidt ret et stykke hen af vejen - men det er lidt mere nuanceret end som så :-). Og man kan vende dit argument på hovedet. Selv "perfekt" kodekvalitet ville ikke nytte noget hvis systemarkitekturen ikke er i orden. (Og her er Windows bestemt ikke perfekt, f.eks. er credential-stealing lidt for nemt med lokal adgang. Det er svært at fixe uden at smadre bagudkompatibilitet).

Hvad nytte er for eksempel en sand box til, hvis man nemt kan hoppe ud af den ved at udnytte en bug?


Bugs kan fixes - det er sværere at fixe et grundlæggende dårligt design :-)

Rigtigt mange sikkerhedstiltag er ud fra erkendelsen at kode desværre ikke er perfekt. ASLR, NX pages, proces-isolering, hypervisors, sandboxing, mitigerings-tiltag såsom hvad EMET tilbyder, og så videre - intet af dette ville være nødvendigt hvis kode var "perfekt". I stedet forsøger man at gøre det så besværligt som muligt at udnytte sikkerhedshuller, og har da også en hvis success med det. Time-to-market for exploits er blevet længere, og det kræver typisk kombination af flere bugs (nogle gange på tværs af moduler) at opnå en interessant exploit.

Men der er lang vej endnu, og jeg tvivler på vi nogensinde får fuldstændigt sikre systemer, specielt så længe folk insisterer på at kode operativsystemer i C/C++. Kombinationen af undefined/unspecified/implementation-defined behavior med compiler-optimeringer gør det mere end almindeligt svært at skrive fejlfri kode.

  • 3
  • 0
Kjeld Flarup Christensen

Det er jo heller ikke hele sandheden. Microsoft begyndte faktisk først med windows 7 (fra 2009) at arbejde på egentlig systemsikkerhed (serversystemer undtaget). Før windows 7 kørte de stort set udelukkende med en antivirus sikkerhedsmodel. Linux har, så vidt jeg ved, haft systemsikkerhed lige siden det startede i 1991. Med et forspring på ca. 18 år er det klart, at linux har bedre sikkerhed.


Nu er jeg ikke ekspert på Windows, men det var vel omkring Windows 7 at Microsoft begyndte at operere med en "kerne". Før det og måske stadigvæk var problemet, at man for at få den nødvendige hastighed i "vinduerne", var nødt til at have en tæt integration mellem det grafiske interface og "operativsystemet".

Så Windows slæber rundt med for meget kode, som skal sikres, mens Linux altid har haft en afgrænsning som gjorde det lettere at sikre koden. Det har så haft sin pris, at Linux p.g.a. X Windows systemet i userspace, altid har været langsommere.

Det skal så siges, at Microsoft har råd til en hær af betalte udviklere til at sikre kvaliteten af koden. Det har Linux ikke, da det jo er "gratis". Så to forskellige forretningsmodeller har givet to forskellige designs. Dog OSX bruger også UNIX modellen, selvom OSX er kommercielt software.

  • 0
  • 0
Sune Marcher

Nu er jeg ikke ekspert på Windows, men det var vel omkring Windows 7 at Microsoft begyndte at operere med en "kerne". Før det og måske stadigvæk var problemet, at man for at få den nødvendige hastighed i "vinduerne", var nødt til at have en tæt integration mellem det grafiske interface og "operativsystemet".


Nej - selv Win9x platformen havde skarp adskillelse mellem kernel og usermode, men fokus var på hastighed, og dos + win3x kompatibilitet, ikke sikkerhed. NT 3.x havde grafikstakken i usermode, i 4.x røg den kernelmode for performance, og med Vista røg den tilbage i usermode (med et ret store ændringer i arkitekturen, bl.a. muliggjort af udviklingen i GPUer). Det er ret fornuftigt, > 90% af BSODs på XP var forårsaget af bugs i 3rd-party grafikdrivere.

Det skal så siges, at Microsoft har råd til en hær af betalte udviklere til at sikre kvaliteten af koden. Det har Linux ikke, da det jo er "gratis". Så to forskellige forretningsmodeller har givet to forskellige designs. Dog OSX bruger også UNIX modellen, selvom OSX er kommercielt software.


Linux er gratis, men der er masser af betalte udviklere, ikke mindst i kernel-land. Og OSX har stadig (for) store dele af grafikstakken i kernelmode... lidt pinligt hvor (relativt) ustabilt det er, med den ekstremt begrænsede mængde hardware de skal supporte. Jeg har brugt en æble-laptop som arbejdsmaskine de sidste to år, og har haft Gray Screen Of Death af så voldsomt avancerede ting som:
- At fullscreene youtube videor i Chrome.
- At tilslutte ekstern skærm.
- At trække et vindue mellem skærme (Firefox med graphics acceleration slået til).
- At vække laptoppen fra sleep mode.

Med andre ord: hverken "unix modellen" eller det at man ikke skal supporte 3rd-party drivere er en garanti for stabilitet.

  • 0
  • 0
Log ind eller Opret konto for at kommentere