Endelig et Varnish sikkerhedshul!

Relateret indhold

Poul-Henning Kamps billede
Poul-Henning er selvstændig systemprogrammør, kernekoder, Varnish-forfatter, data-arkæolog og brokkehoved uden særlig portefølje.

Kommentarer (39)

Kommentarer (39)
Kasper C. U.

Jeg forstår ikke, at Version2 tillader at du sådan bare udgiver et blogindlæg. Hvad får vi ud af sådan et kort indlæg, som ikke engang går i dybden med problemet? Kunne det være interessant, at vente og så udgive et dybdegående blogindlæg, som man rent faktisk kan bruge til noget? Bare et forslag.
Efterhånden virker det som om at PHK bare er tilladt at udgive det ene ukritiske blogindlæg efter det andet. Oftest får han høvl i kommentarsporet... fordi der efterhånden ingen værdi er i indlæggende - bare se det her indlæg.

Casper Pedersen

"As embarrased as I am to find out that after 35 years of writing C-programs I still dont understand signed/unsigned variables, I am also incredibly proud that it took eleven years before Varnish had a major security incident."

Hvis man skriver C i 35år og stadigvæk har problem med signed/unsigned så er der ikke få problmer man kan få sig selv ind i ... så mon ikke der kan være flere overraskelser gemt.

Joe Sørensen

Jeg synes ikke at det er et problem at PHK spammer denne kanel hver gang der opdages et sikkerhedsproblem i Varnish. Han er fast blogger på Version2, så jeg forventer at han skriver hvad han Interesserer sig for.

Jeg går også ind for full disclosure. Han har før fortalt om Varnishs fortræffeligheder på denne Blog. Så jeg ser det passende at han også linker til sikkerhedsfejl i samme Blog. Det er trods alt en fejl der gør det let at DOSe en side der ligger bag Varnish, uden de store resurser.

For det andet så ser jeg PHK et irriterende men kompetent IT skeptisk brokkehoved. Der er mange irriterende skeptiske brokkehoveder på Internettet, men desværre ret få kompetente. Så jeg har det fint med at han blogger på Version2.

Jakob Jakobsen

Al respekt for PHK, men det er trist at man er nødt til at læse ned til Joe Sørensens kommentar for at få en idé om hvad det drejer sig om.

Kunne man ikke have sendt det her ud på Twitter/alternativ, og så først til Version2 når der faktisk er skrevet en artikel?

Lars Lundin

Jeg forstår ikke, at Version2 tillader at du sådan bare udgiver et blogindlæg.

Jeg blev opmærksom på sikkerhedshullet i varnishd via debian-security-announce listen og tænkte at det nok ville blive nævnt her.

Jeg synes de to links ovenfor er læsværdige nok, og hvis man er uenig og f.eks. synes forfatteren roser sig selv for meget, så kan man jo altid finde noget andet læsning.

I vanlig ilende stil har PHK iøvrigt lavet slåfejlen 'mititation' på sin lænkede side nummer to.

Lars Lundin

Hvor er det her blogindlæg dog ligegyldigt

Et remote exploit (hvilket dette ikke var) til varnishd ville kompromittere en betragtelig del af hele internettets webserver-kapacitet, og med den interesse det må give for sikkerhedshuller, så er det da bemærkelsesværdigt at manden ikke kan få et CVE nummer, fordi han er ukendt i den sammenhæng.

Jeg synes også at designet, med en konfigurering, der er så fleksibel, som her er værd at bide mærke i.

Endeligt synes jeg det er pudsigt med selve fejlbeskeden, der fejlagtigt kunne udløses. Den (skatteyderfinancierede) software jeg selv er med til at skrive og distribuere prøver at komme med så detaljerede fejlmeddelelser som muligt (f.eks. "Inddata A=66000 > 65535") . Men det er jo så fordi den software realistisk set ikke er nyttig på en udadvendt server, hvor man ikke vil spilde resourcer (herunder kode med risiko for fejl), på fejlmeddelelser til potentielt skumle brugere.

Lars Lundin

"Uhm.... jo det er :-("

OK, så siger vi det.. Jeg mente et sikkerhedshul, der gav mulighed for kodeeksekvering på servereren.

René Nielsen

Foruden den genlydende "Titel", synes jeg det en guldstjerne værdig.

Fantastisk at kunne følge med i dine udfordringer PHK, og endnu bedre er det, at se hvilken åben- og ærlighed der er omkring det - Keep up the spirit!

Jeg håber brugerne af Varnish tager udmeldingen til sig og ligeledes dine haters' springer indlægget her over, såfremt deres nysgerrighed ellers tillader dem det.

Held og lykke!

Lars Lundin

Endeligt synes jeg det er pudsigt med selve fejlbeskeden, der fejlagtigt kunne udløses.

@ PHK: Ved nærmere eftertanke, så er det jo netop sagens kerne, at fejlbeskeden ikke skulle kunne udløses af brugers input.

Så hvorfor bruger koden ikke assert() (som er det ord du anvender i din lænkede forklaring) ?
- hvis den art af check (f.eks. mod kode- og hardware-fejl, eller andet hvor det ikke giver mening af fortsætte) ikke skal kunne slås fra ved oversættelse, så kunne du rulle din egen varnish_assert().

Det ville gøre det klart for læseren hvad formålet med if-sætningen er.

Lars Lundin

Vi bruger if til ting der kan forekomme og skal håndteres som fejlsituationer.

Vi bruger assert til ting der ikke skal kunne forekomme - som f.eks her: Negative længder.

I gennemsnit er ca. 10% af alle kodelinier beskyttet af asserts i Varnish

Ja, jeg spørger så interesseret, netop fordi varnish virker eksemplarisk godt designet - og også velskrevet, selvom det første må siges at være sværere.

En if-sætning, der fører til en afslutning af processen efter en kort besked, er det ikke noget der netop passer til en assert()-lignende makro?

Morten Nissen

Alle der har ansvar for noget kode andre er afhængige af kan nikke genkendende til din sidste linje i opslaget.
Det blev til den vigtigste takeaway i det her opslag.

Der kommer en dag hvor man må sige:
Har lidt travlt, mere senere.

Kim Henriksen

men jeg håber virkelig at mine brugere ikke spilder tiden bare fordi igen udnytter det her endnu.

Jeg har startet med at udrulle mitigation - tusind tak indlægget.


Til alle brokkehoveder, stop jer selv.

Bare det at i overhoved gider at spilde bits på at poste disse total ligegyldig kommentarer om at PHK ikke burde have oprette blog indlægget, er over min fatte evne.

Hvis PHK f.eks. kun havde holdt sig til at bruge Twitter som kanal til at poste det, så havde jeg ikke fanget det før evt. f.eks. Version2 eller andre sites jeg rent faktisk besøger havde skrevet om det.

Poul-Henning Kamp Blogger

En if-sætning, der fører til en afslutning af processen efter en kort besked, er det ikke noget der netop passer til en assert()-lignende makro?

Uhm...

Det If statement skal netop ikke føre til afslutning af processen, men håndtere ubrugeligt input fra klienten som en fejlsituation.

Fordi if statement ikke fanger negative tal, kører den videre og rammer den assert der skal sikre at vi ikke kører videre med skrammel-input.

Simon Justesen

I stedet for at brokke sig over pettitesser, skulle man måske istedet glæde sig over, at de folk, der laver, og tester dette fine stykke software, så vi kan sove roligt om natten.

11 år er sgu lidt af en bedrift!

Carsten Hvilsted

Jeg har ingen forstand på Varnish.

Jeg synes, det er forfejlet at kritisere PHK for at poste så kort, som han gjorde. Jeg finder det interessant at en del af det pres der nu ligger, for at få rettet fejlen, syder gennem indlægget. Det gør hele sagen levende, for det første. For det andet, så er jeg sikker på PHK skriver et længere opdaterende og konkluderende indlæg, når han har tid.

Jeg har haft stor fornøjelse af at læse PHKs blog gennem tiden. Han har evnen til at koble funktionen af noget meget teknisk, sammen med meget håndgribelige resultater, som teknikken har på elementer i alle menneskers daglige liv - IT professionelle eller ej.

Lars Lundin

I stedet for at brokke sig over pettitesser, skulle man måske istedet glæde sig over, at de folk, der laver, og tester dette fine stykke software, så vi kan sove roligt om natten.

Ja, og så ovenikøbet tager sig tid til at skrive en udførlig forklaring om forløbet.

Så vidt jeg kan se så består brokkeriet i at:
1) forklaringen er på engelsk,
2) blog-indlægget her opfattes som reklame.

Det er vitterligt pettitesser, og det andet dertil antageligt udtryk for en manglende forståelse for hvad det hele handler om.

Morten Faurholt

Hej PHK,

tillykke med der gik 11 år første hul. Og fin håndtering!

Jeg er gammel C programmør men må tilstå jeg ikke ved hvad "inline-C" er jf. den side du linker til. Jeg kender selvfølgelig godt "inline" keywordet (selvom jeg yderst sjældent har brugt det) som hint til compileren om inlining af en funktion, men tænker det næppe kan være det du henviser til. Jeg ved heller ikke hvad VMOD er. Jeg har læst Kernighan's kommentar ang. manglende escape i Pascal, og det ser ud til at være en kritik af manglen på type coercion i Pascal. Men type coercion må man jo sige findes i standard C. :) Er inline C en særlig konvention eller måde at bruge C på?

Lars Lundin

@PHK:

De mange assert()'s er jo også maskinlæsbare kommentarer, som en statisk analyse kan bruge til at påpege (potentielt) fejlagtig kode.

Var det sådan at den nævnte StackPath.com fandt fejlen?
- eller kan du sige noget om hvordan fejlen ellers blev fundet?

Log ind eller opret en konto for at skrive kommentarer