Hlavní navigace

Názor ke zprávičce Let's Encrypt zítra revokuje 3 miliony certifikátů od Filip Jirsák - Snažil jsem se to ve zprávičce popsat, asi...

  • Aktualita je stará, nové názory již nelze přidávat.
  • 4. 3. 2020 16:32

    Filip Jirsák

    Snažil jsem se to ve zprávičce popsat, asi neúspěšně :-)

    Normální postup je, že dáte požadavek na validaci toho, že vlastníte doménu (uložení souboru na webový server, TXT DNS záznam). Tohle je validace v rámci ACME protokolu a u Let's Encrypt platí 30 dní. V rámci této validace se kontrolují i CAA záznamy – zda je vůbec Let's Encrypt oprávněna vydávat pro tyto názvy certifikát. Tahle validace byla přidána dodatečně a je to požadavek prohlížečů.

    Obyčejně krátce po provedení validace necháte i vytvořit certifikát, a pak je vše OK. Někdy ale může nastat prodleva, ten certifikát nenecháte (z jakéhokoli důvodu) vystavit hned – máte na to těch 30 dní. (Nejčastějším důvodem asi bude to, že přidáváte na certifikát novou doménu – využijete toho, že ostatní jsou ještě validované a zvalidujete jen tu novou.) Jenže na kontrolu CAA záznamů jsou přísnější pravidla, kontrola při vydání certifikátu nesmí být starší, než 8 hodin (předpokládám, že je to pravidlo CA fóra). Takže když využijete třicetidenní lhůtu pro vydání certifikátu, kdy je platná validace, ale překročíte 8 hodin od validace CAA záznamů, musí se validace CAA záznamů provést znova (před samotným vydáním certifikátu). A v kódu Boulderu pro tuhle revalidaci byla chyba – sice se správně roztočila smyčka pro počet domén, které je potřeba validovat, ale v té smyčce se nebrala další a další doména, pracovalo se pořád jen s tou první. Takže když jste požadoval certifikát pro X domén, místo toho, aby se ověřilo znova těch X domén, ověřila se jen první doména ze seznamu, za to X-krát. (Neřešil bych, která byla ta první – je to chyba v programu, ty domény teoreticky mohou být uložené v nějaké struktuře, která nedrží pořadí prvků, takže první může být náhodná doména. Nevím, jak to bylo reálně, zda to byla třeba první doména uvedená v SAN žádosti.)

    Tedy netýkalo se to certifikátů vystavených do 8 hodin od validace toho, že držíte doménové jméno, a i z těch vystavených později se to netýkalo těch, kde byla jen jedna doména. Využít to k záměrnému útoku by bylo obtížné (a útok by spočíval v tom „chtěli jsme vydávat certifikáty od LE, ale v posledních 30 dnech jsme si to rozmysleli, ale jen pro některé domény“). Možnost zneužití je podle mne prakticky nulová, ale je to prostě situace, kdy CA vydala certifikáty, u kterých není schopná garantovat, že byla oprávněná je vydat, tak je revokuje. Takže revokace je správná, trochu mne překvapila ta rychlost, kdy oznámení e-mailem šlo nějakých 8 hodin před okamžikem, kdy mohla začít revokace. (Proto jsem to také dával sem jako zprávičku – já jsem si toho e-mailu všiml jenom proto, že mne na něj GMail speciálně upozornil, že je to něco, čemu je potřeba se věnovat hned.) Chápal bych to v případě, kdy by šlo o reálnou možnost útoku. Na druhou stranu se tím nastavuje pravidlo, že se v takovýchhle případech bude postupovat rychle, což podle mne má něco do sebe.

    Na druhou stranu, chtělo by to v rámci ACME i tyhle revokace ze strany CA nějak zautomatizovat – protože dnes je LE postavené na automatizaci, a tohle je najednou úplně jiný prvek, který vyžaduje, aby správce zareagoval na e-mail, vstoupil do toho automatizovaného procesu a ručně vynutil obnovu certifikátů. Jednak to někde může být problém – dovedu si představit, že je někde automatika nastavená na obnovu každý měsíc a nepočítá se s tím, že by to šlo snadno spustit ručně mimo termín. Druhá rovina je trochu filozofická – připadá mi trochu nesmyslné, že nějaký robot u LE posílá e-maily lidem, aby šťouchli do jiných robotů, že mají něco udělat. Ty role bych si představoval spíš opačně :-) Chápu, že je to něco úplně nového, dnes veškerou komunikaci zahajuje žadatel o certifikát – ale nějaký volitelný webhook, na který když LE sáhne, dá tím najevo, že by možná bylo vhodné daný certifikát obnovit, by byl užitečný.