Hvad 260 byte faktisk gør

Fejlen, offentliggjort 8. juli af FoxIO-forskeren Sebastien Fery og døbt XRING, ligger i QPACK, den ordning til komprimering af headere, som HTTP/3 læner sig op ad. Ingen af værdierne i angrebet bryder QPACKs regler. XQUIC melder som standard en grænse for den dynamiske tabel på 16 KiB; nyttelasten beder om 64 byte, så 65, og driver tabellen ind i præcis den ombrudte hukommelsesopstilling, der rammer en fejlbehæftet gren. Serverprocessen vælter. Ingen legitimationsoplysninger, ingen overstore pakker, intet, en firewall markerer som misdannet.

Det er netop det, der gør den farlig. Det meste filtrering mod tjenesteblokade leder efter mængde eller åbenlyst dårligt input, og XRING er ingen af delene. Det er en lille, velformet forespørgsel, en normal klient kunne sende ved et uheld, og den gør sin skade i fortolkningsstien, før nogen applikationslogik kører. Enhver XQUIC-version til og med v1.9.4, den aktuelle, er ramt, og der findes ingen rettet udgave at skifte til.

Hvorfor du kan køre den uden at vide det

XQUIC er Alibabas open source QUIC- og HTTP/3-bibliotek, så risikoen er ikke kun Alibabas. Det er indlejret i Tengine, koncernens Nginx-baserede webserver, som ifølge FoxIO betjener Alibabas sky og indholdsleveringsnet på tjenester som Taobao og Alipay. Enhver operatør, der har trukket XQUIC ind i sin egen opsætning, eller kører et produkt, der leverer biblioteket længere oppe, arver samme svaghed, uanset om han kender afhængigheden eller ej.

Det er den ubehagelige del for enhver, der driver moderne webinfrastruktur. HTTP/3 er vokset stille gennem CDN'er og belastningsfordelere, og bibliotekerne nedenunder deles. En fejl i en bredt indlejret QUIC-implementering er ikke en enkelt leverandørs problem, men en eksponering af forsyningskæden, der dukker op overalt, hvor koden er genbrugt. Den afhængighed, du ikke kan navngive, er den, du ikke kan rette.

Rettelsen er en konfigurationslinje, og ingen CVE advarer dig

Indtil en rettet udgave udkommer, er afværgningen driftsmæssig, ikke et download. Du kan sætte SETTINGS_QPACK_MAX_TABLE_CAPACITY til 0, hvilket slår QPACKs dynamiske tabel fra og fjerner den sårbare sti, eller du kan droppe HTTP/3-understøttelse og falde tilbage til HTTP/2, mens rettelsen forberedes. Begge er ændringer, en operatør i dag foretager i sin egen konfiguration, ikke en venten på en leverandørs rettelsescyklus.

Den bredere lære handler om, hvordan advarslen når frem, eller ikke når frem. Pr. 10. juli findes ingen CVE for XRING, så ethvert hold, der kun holder øje med CVE-feeds eller venter på et bulletin på rettelsestirsdagen, ser intet. Det forsvarlige træk er at kortlægge, hvor HTTP/3 og QPACK reelt kører i dit miljø, bekræfte hvilket QUIC-bibliotek der ligger under, og behandle fraværet af en CVE som en grund til at handle, ikke til at slappe af.