CASC: S Code Signing certifikátem přichází i odpovědnost

21. 5. 2018 | Jindřich Zechmeister

Certifikát pro podpis kódu je mocný nástroj pro tvůrce softwaru, ale v nepovolaných rukou se snadno stává nástrojem pro šíření malwaru. Upozorňujeme na nutnost zabezpečení Code Signing certifikátu, která už není jen dobrovolná, ale vyžadují ji pravidla pro získání Code Signing certifikátu. Více se dozvíte v následujících odstavcích.

Minimální požadavky na Code Signing certifikáty

Stále poměrně nové Minimální požadavky pro (vystavování) Code Signing certifikátů jsme na našem blogu již zmínili. Dokument Minimum Requirements for the Issuance and Management of Publicly-Trusted Code Signing Certificates je výsledkem snahy CA Security Council, certifikačních autorit a uznává ho i Microsoft. Není však uznáván celým CA/B Fórem, které definuje tzv. Baseline Requirements pro vydávání serverových certifikátů; CABF nepovažuje podepisování kódu za oblast své kompetence a požadavky uplaťňují pouze některé členské certifikační autority, které se na dokumentu podílely. Celé znění dokumentu s novými požadavky najdete na webu CA Security Council.

Požadavky pro Code Signing certifikáty poprvé zmiňují nutnost bezpečného uložení certifikátu. Vlastníkům Code Signing certifikátů ukládají nutnost uchovávat certifikát s privátním klíčem mimo stroj, na kterém probíhá podepisování. Certifikát má být bezpečně uložen na externím úložišti, kterým se myslí v lepším případě uložení v zašifrované podobě (TPM čip nebo HSM), v horším alespoň uložení na USB disk nebo SD kartu. Předpokládá se, že každý vlastník Code Signing certifikátu bude mít klíče uloženy mimo stanici, kde s nimi podepisuje, a bude se aktivně chránit proti ukradení a kompromitaci certifikátu.

Proč se certifikační autorita stará o uložení klíčů?

Certifikační autority ukládají majitelům tuto povinnost kvůli vysokému počtu krádeží a zneužití Code Signing certifikátu. Motivací útočníků pro jejich krádež je možnost podepisování malwaru a zvyšování jeho důvěryhodnosti v očích potencionálních obětí. Případy zneužití Code Signing certifikátu pro šíření malwaru se dělí na dvě poloviny; v polovině případů je certifikát vystaven subjektu se špatnými úmysly a v druhé polovině případů je příčinou zcizení certifikátu důvěryhodnému vývojáři.

Většina vývojářů na platformě Windows podepisuje pomocí PFX certifikátu a nikoliv pomocí úložiště nebo tokenu. V takovém případě není pro útočníka složité ukrást PFX soubor z počítače (typicky umístěný na Ploše) a následně se pokusit uhádnout heslo. Pokusů k jeho uhodnutí má neomezeně.

Nutnost zabezpečení Code Signing certifikátů je zřejmá. I z toho důvodu byl vytvořen Code Signing EV certifikát s rozšířeným ověřením, který je umístěn na tokenu a není možné ho exportovat. I při krádeží tokenu je zneužití certifikátu složité, protože token se po několika špatných zadáních hesla zablokuje. Kromě zabezpečení má Code Signing EV další velkou výhodu, kterou je 100% důvěryhodnost ve SmartCreen ve Windows (který je jinak noční můrou vývojářů). Pokud nechcete, aby Windows uživatelům aplikaci blokoval jako nedůvěryhodnou, navštivte stránku o Code Signing EV certifikátu na SSLmarket.cz.

Kompromitace certifikátu může mít nemilé konsekvence

Ukradení certifikátu pro podpis kódu nemá pouze konsekvence v podobě možného poškození jména jeho vlastníka a ohrožení uživatelů; certifikační autority budou kontrolovat žadatele o certifikát a jeho spojitost s dřívější kompromitací certifikátu bude zohledněna při získání certifikátu nového. Je dokonce možné, že žadatel s dříve kompromitovaným certifikátem dostane pouze certifikát hardwarově zabezpečený, čemuž odpovídá již zmíněný Code Signing EV. Bezpečnost vašeho Code Signing certifikátu byste neměli brát na lehkou váhu ani z tohoto důvodu.

Proveďte vhodná opatření a neriskujte dobré jméno

Všichni současní vlastníci Code Signing certifikátu by se měli přesvědčit, zdali mají certifikát opravdu v bezpečí. Pokud musí být v počítači, kde se podepisuje, tak by měl být v úložišti certifikátů (rozhodně ne jako soubor) a privátní klíč nesmí být exportovatelný. Tento princip uložení certifikátů však není v souladu s výše zmíněnými požadavky certifikačních autorit.

Vhodnější "levné" řešení je umístění certifikátu na USB disku nebo SD kartě se zašifrovaným filesystémem. K zašifrování externího disku lze využít řadu programů, které fungují na principu již nevyvíjeného TrueCryptu. Vývojáři s větším rozpočtem by měli místo běžného Code Signing certifikátu využít EV Code Signing certifikát. Jak jsem už zmínil výše, tak je tento certifikát umístěn na HW tokenu a není možné ho z něj exportovat. Riziko zneužití je tak výrazně omezeno.

Velké firmy a korporace, které mají na aktivní bezpečnost rozpočet, by měly mít certifikát uložen šifrovaný na hardwarovém zařízení (HSM). U velkých korporací může být podepisování pomocí tokenu nepraktické, proto mohou bezpečné uložení certifikátu vyřešit pomocí speciálního hardwaru.

Pro všechny majitele Code Signing certifikátu platí nová povinnost starat se o svůj certifikát a předcházet jeho kompromitaci. Neignorujte ji a začněte ho chránit také; nikdy nevíte, co se může stát. V Požadavcích je mimo jiné uvedeno, že na objednávky ze zemí s vysokou mírou zneužití Code Signing certifikátů (přes 5 %) budou aplikovány vyšší požadavky na ověření žadatelů. I z toho je patrné, že certifikační autority řeší skutečný problém.

Zdroje a více informací:

  1. CAsecurity.org: Minimum Requirements for the Issuance and Management of Publicly-Trusted Code Signing Certificates.
  2. CAsecurity.org: dokument Minimum Requirements for the Issuance and Management of Publicly-Trusted Code Signing Certificates
  3. Gigaom.com: 2017 Brings New Code Signing Standards that Aim to Stop Bad Actors

Ing. Jindřich Zechmeister
Specialista pro bezpečnostní SSL certifikáty
DigiCert TLS/SSL Professional
e-mail: jindrich.zechmeister(at)zoner.cz