Disassembler

Artificial intelligence is no match for natural stupidity.
20květen2016

Kaspersky Anti-Virus a HTTPS ve Firefoxu


Uživatelskou podporu sice již nějaký ten pátek nedělám, ale z předchozích let jsem si ponechal pár nepředpojatých koncových zákazníků s dobrou platební morálkou, abych úplně nevyšel ze cviku. Jeden z nich provozuje Skylakový Intel NUC6i3SYK jako hlavní domácí počítač. Před pár dny jsem se u něj zastavil, abych mu aktualizoval BIOS a ošetřil tak číhající chybu v napájení. Zároveň jsem se ze slušnosti poptal, zda na mě nemá nějaká další přání. Sdělil mi, že má problém s přístupem na Google. Kdykoliv jej otevře, prohlížeč mu zahlásí, že připojení není zabezpečené a stránku odmítne načíst. A protože většinu problémů se sítí často působí naivně nebo mizerně naprogramový bezpečnostní software, zaměřil jsem svoji pozornost na relativně čerstvě nainstalovaný Kaspersky Anti-Virus.

Certifikáty, kam se podíváš


Google na všech svých službách a webech automaticky používá TLS zabezpečení, se kterým byl v tomto případě evidentně nějaký problém. Jelikož se SSL/TLS, certifikáty a podobnými kryptografickými opičárnami pracuji denně, byla tato úloha téměř jako stvořená pro mě. Už jsem se ve své praxi setkal s malwarem, který šmíruje a ovlivňuje provoz tak, že si do úložiště certifikátů nacpe svou vlastní certifikační autoritu a pak funguje jako HTTP a HTTPS proxy a za jízdy vydává podvržené certifikáty, které tlačí nic netušícímu uživateli, resp. jeho prohlížeči. Se skutečným cílovým serverem si pak naváže další, úplně jiné připojení a může vesele zachytávat odeslaná data nebo do stránek injektovat škodlivý kód. Na stejném principu pak fungují i některé forenzní nástroje, jako třeba mitmproxy, Fiddler nebo Burp proxy, pomocí které bylo možno částečně vyvrátit mýty o špehování uživatelů Windows 10. A úplně stejnou praktiku s podvrhováním certifikátů používá i Kaspersky Anti-Virus, aby mohl sledovat a hlídat případné breberky přenášené šifrovaným spojením. Navíc KAV do odpovědí serveru přidává HTTP Strict Transport Security (HSTS) a HTTP Public Key Pinning (HPKP) hlavičky, které instruují prohlížeč, aby si uložil informace o zabezpečení a používaném certifikátu a při následných pokusech o spojení pak automaticky vynutil použití HTTPS a zkontroloval, zda zapamatovaný certifikát stále souhlasí s tím, kterým se identifikuje server (certificate pinning). A právě tady byl onen kámen úrazu. Kaspersky Anti-Virus při instalaci ukládá kořenový certifikát své certifikační autority do systémového úložiště důvěryhodných certifikačních autorit, což za předpokladu, že jsme vůbec ochotni takovouto nečistou hru akceptovat, samozřejmě dává smysl. Můj uživatel ale používá Firefox. A milý Firefox na nějaké systémové úložiště zvysoka kašle, protože má svou vlastní klíčenku pro certifikáty a do té už se tento kořenový certifikát nedostal. To ovšem Kaspersky neví, takže Firefoxu vnutí podvržený certifikát v domnění, že jej zblajzne i s navijákem a ono se místo toho zobrazí tohle:

Bezpečnostní varování Firefoxu

SEC_ERROR_UNKNOWN_ISSUER říká, že vystavitel certifikátu nepatří mezi důvěryhodné autority a protože KAV nechává prohlížeč vynutit HSTS a silné ověřování certifikátů, Firefox se šprajcne s tím, že došlo k opravdu závažnému bezpečnostnímu problému a nepovolí v takovém případě uživateli ani schválit výjimku.

K problému je tedy možno přistoupit ze dvou stran. Buď svolím, aby Kaspersky hlídal i zabezpečený provoz a v tom případě je nutno do Firefoxu importovat kořenový certifikát KAV a označit jej jako důvěryhodný. Anebo se mi řešení v podobě řízeného MitM útoku nelíbí a pak je možno kontrolu šifrovaných spojení v nastavení KAV úplně zakázat.

Varianta 1 - Import certifikátu


Kaspersky Anti-Virus má sice v útrobách svého grafického rozhraní tlačítko Instalovat certifikát, nicméně tato funkce má vliv pouze na systémové úložiště a nikoliv na profily Firefoxu. Jelikož Internet Explorer a Google Chrome používají systémové úložiště, popíšu tedy import pouze pro Firefox, ve kterém jsem výše uvedený problém řešil. Nejprve donavigujte do Možnosti -> Rozšířené (Případně si můžete zkrátit cestu zadáním about:preferences#advanced do adresního řádku). Zde vyberte záložku Certifikáty a klepněte na stejnojmenné tlačítko Certifikáty.

Rozšířená nastavení

Ve správci certifikátů pak vyberte záložku Autority a klepněte na tlačítko Importovat....

Import certifikátu

Ve výběru souboru se doklikejte ke kořenovému certifikátu, který si Kaspersky Anti-Virus ukládá v umístění

C:\ProgramData\Kaspersky Lab\AVP16.0.0\Data\Cert\(fake)Kaspersky Anti-Virus Personal Root Certificate.cer

Nutno podotknout, že Adresář ProgramData je skrytý a že vaše cesta se samozřejmě může lišit v závislosti na verzi KAV a označení systémového disku. Po zvolení kýženého certifikátu ještě Firefoxu odkývejte, že chcete Uznat tuto CA pro identifikaci serverů.

Uznání identifikace

Pak už můžete pozavírat všechna okna a pří následujícím obnovení by se stránka již měla načíst.

Varianta 2 - Nelez mi do zelí


Neznaje Kaspersky Anti-Virus, zabralo mi nalezení požadované volby pro vypnutí více času, než by se slušelo. Rozhraní KAV je sice příjemné na pohled, ale rozmístění položek a jednotlivých voleb mi připadá až příliš chaotické. Konfiguraci kontroly šifrovaného připojení naleznete v Nastavení -> Rozšířené -> Síť.

Rozšířená nastavení

Na následující obrazovce pak zvolte Nekontrolovat šifrovaná připojení a potvrďte varování o snížení ochrany.

Vypnutí kontroly šifrovaných spojení

KAV vám tak přestane kecat do řízení a stránky zabezpečené HTTPS začnou opět fungovat s původními certifikáty.