Endelig et Varnish sikkerhedshul!
Det tog 11 år...
http://varnish-cache.org/security/VSV00001.html
http://varnish-cache.org/docs/trunk/phk/VSV00001.html
(Har lidt travlt, mere senere...)
phk
- emailE-mail
- linkKopier link

...men det er dyrt at lave god journalistik. Derfor beder vi dig overveje at tegne abonnement på Version2.
Digitaliseringen buldrer derudaf, og it-folkene tegner fremtidens Danmark. Derfor er det vigtigere end nogensinde med et kvalificeret bud på, hvordan it bedst kan være med til at udvikle det danske samfund og erhvervsliv.
Og der har aldrig været mere akut brug for en kritisk vagthund, der råber op, når der tages forkerte it-beslutninger.
Den rolle har Version2 indtaget siden 2006 - og det bliver vi ved med.
Fortsæt din læsning
- Sortér efter chevron_right
- Trådet debat
Nu hvor Varnish også har været påvist at have fejl der kan give problemer, er der så planer om at omskrive hele molevitten i et såkaldt sikkert sprog?
- more_vert
- insert_linkKopier link
Var det sådan at den nævnte StackPath.com fandt fejlen?</p>
<ul><li>eller kan du sige noget om hvordan fejlen ellers blev fundet?
Jeg ved det faktisk ikke, har ikke talt direkte med dem selv.
- more_vert
- insert_linkKopier link
@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?
- more_vert
- insert_linkKopier link
VMOD er en af Varnishs mange "3" tegnsforkortelserhttps://www.varnish-cache.org/docs/trunk/reference/vmod.html
- more_vert
- insert_linkKopier link
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å?
- more_vert
- insert_linkKopier link
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:
- forklaringen er på engelsk,
- 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.
- more_vert
- insert_linkKopier link
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.
- more_vert
- insert_linkKopier link
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!
- more_vert
- insert_linkKopier link
Det If statement skal netop ikke føre til afslutning af processen,
OK, så bukker og takker jeg for den udførlige forklaring.
- more_vert
- insert_linkKopier link
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.
- more_vert
- insert_linkKopier link
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.
- more_vert
- insert_linkKopier link
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.
- more_vert
- insert_linkKopier link
Vi bruger if til ting der kan forekomme og skal håndteres som fejlsituationer.</p>
<p>Vi bruger assert til ting der ikke skal kunne forekomme - som f.eks her: Negative længder.</p>
<p>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?
- more_vert
- insert_linkKopier link
Hvorfor bruger koden ikke konsistent assert(), men af og til en eksplicit if med samme formål ?
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
- more_vert
- insert_linkKopier link
way ahead of you there.
Det viser dit nu berømte patch ikke, så jeg vil præcisere mit spørgsmål til:
Hvorfor bruger koden ikke konsistent assert(), men af og til en eksplicit if med samme formål ?
- more_vert
- insert_linkKopier link
så kunne du rulle din egen varnish_assert().
Uhm... way ahead of you there...
- more_vert
- insert_linkKopier link
Så hvorfor bruger koden ikke assert()
Det gør den også, et par linier længere nede, men via en macro:
vfe->priv2 = cl; ... if (vfe->priv2 > 0) { ... return (VFP_OK); } AZ(vfe->priv2);
- more_vert
- insert_linkKopier link
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.
- more_vert
- insert_linkKopier link
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!
- more_vert
- insert_linkKopier link
PHK, når du nu er her, har du noget indtryk af hvor hurtigt det går med at få lappet hullerne derude?
Ingen ide.
Jeg havde forventet noget der lignede en shitstorm over det her, men der er utroligt stille (fodnote: USA er først ved at vågne nu), men jeg håber virkelig at mine brugere ikke spilder tiden bare fordi igen udnytter det her endnu.
- more_vert
- insert_linkKopier link
Jeg synes egentlig det er slemt nok
PHK, når du nu er her, har du noget indtryk af hvor hurtigt det går med at få lappet hullerne derude?
- more_vert
- insert_linkKopier link
Jeg synes egentlig det er slemt nok at du kan "slukke" for alle de varnish servere du kan finde.
Det kunne være et mere sexet sikkerhedshul end muligheden for at lave DOS på backend-serverene ved effektivt at slå caching fra. Nej, du må sgu lave noget bedre til år 2028.
Jeg synes bestemt at indlægget er relevant og nyhedsværdien overgår manglen på detaljer.
- more_vert
- insert_linkKopier link
OK, så siger vi det.. Jeg mente et sikkerhedshul, der gav mulighed for kodeeksekvering på servereren.
Jeg synes egentlig det er slemt nok at du kan "slukke" for alle de varnish servere du kan finde.
Men nej, der er ikke hverken data-læk eller remote execution.
- more_vert
- insert_linkKopier link
"Uhm.... jo det er :-("
OK, så siger vi det.. Jeg mente et sikkerhedshul, der gav mulighed for kodeeksekvering på servereren.
- more_vert
- insert_linkKopier link
Et remote exploit (hvilket dette ikke var)
Uhm.... jo det er :-(
- more_vert
- insert_linkKopier link
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.
- more_vert
- insert_linkKopier link
Det er da relevant, men ikke i sådan en form på dette forum.
- more_vert
- insert_linkKopier link
Kan kun være enig. Hvor er det her blogindlæg dog ligegyldigt og langt mere passende til Twitter..
- more_vert
- insert_linkKopier link
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.
- more_vert
- insert_linkKopier link
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?
- more_vert
- insert_linkKopier link
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.
- more_vert
- insert_linkKopier link
mon ikke der kan være flere overraskelser gemt.
Det skulle da være mærkeligt andet...
Send mig email hvis du finder noget.
- more_vert
- insert_linkKopier link
"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.
- more_vert
- insert_linkKopier link
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?
Jeg forstår ikke, at du ikke forlængst har fundet en anden legeplads når den her ikke er sjov for dig.
- more_vert
- insert_linkKopier link
Hvad får vi ud af sådan et kort indlæg, som ikke engang går i dybden med problemet?
Det hele står da beskrevet i de vedhæftede links. :-)
- more_vert
- insert_linkKopier link
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.
- more_vert
- insert_linkKopier link
Uhahaha - Det er en lækkerbidsken den dér :-)
- more_vert
- insert_linkKopier link