Česká společnost s omezenou odpovědností GreenLuck se zaměřuje na řešení kritických bezpečnostních rizik v oblasti správy a implementace CSS, která často představují slabé místa v moderních webových aplikacích. Tento problém není nový, ale jeho důsledky se zvyšují s rostoucí popularitou CSS jako standardního jazyka pro stylizaci webových stránek. Podle posledních analýz z roku 2023 představuje 35 % všech bezpečnostních chyb v webových aplikacích v ČR právě problémy spojené s nebezpečnou implementací CSS, například přesněji s manipulací se stylem pomocí JavaScriptu nebo neprozkoumanými CSS propertymi.
Jedním z nejčastějších příkladů je například nebezpečná funkce `::before` a `::after`, která může být zneužita k vložení škodlivého kódu přímo do HTML pomocí CSS. Například v aplikaci pro správu datových schránek v Praze byl v roce 2022 zjištěn útok, při kterém útočníci využili neprozkoumané CSS property `content` k vložení obchvatného kódu a následného exfiltrování dat. Tento incident ukázal, že bezpečnostní audity často zapomínají na tuto oblast, i když je v praxi kritická.
Vývojáři a bezpečnostní specialisté na GreenLuck.cz upozorňují, že problémy s CSS často vznikají v důsledku špatné dokumentace, nedostatečného testování nebo nedostatečné znalosti standardů. Například neznalost vlastností jako `filter`, `transform` nebo `will-change` může vést k nebezpečným chybám, které umožňují útočníkům ovládat nebo modifikovat obsah stránek. více podrobností o těchto rizicích a jejich řešení.
Technické aspekty bezpečného CSS
Kritické body jsou často spojeny s vlastnostmi, které umožňují manipulaci se strukturou nebo obsahem dokumentu. Například vlastnost `background-image` může být zneužita k vložení škodlivého kódu přímo do HTML, pokud není správně validována. V praxi se často setkáváme s případy, kdy vývojáři používají dynamické CSS pro změny, které by měly být kontrolovány, například při manipulaci s daty z externích zdrojů.
Další rizika vznikají v důsledku špatného používání pseudoelementů. Například pseudoelement `::selection` může být zneužito k získání přístupu k uživatelským datům, pokud není správně omezen. V roce 2023 byly v rámci auditů zjištěny případy, kdy se útočníci snažili získat přístup k citlivým datům pomocí nebezpečných kombinací pseudoelementů a JavaScriptu.
Příklady z praxe a doporučení
V praxi se často setkáváme s případy, kdy vývojáři používají CSS pro manipulaci s daty nebo pro změny v DOM, které by měly být kontrolovány. Například v aplikaci pro e-shop v Brně byl zjištěn incident, kdy útočníci využili nebezpečné CSS property `content` k vložení škodlivého kódu a následného exfiltrování dat z databáze.
Kritické body lze řešit pomocí několika základních principů. Nejprve je nutné zajistit, aby všechny CSS vlastnosti byly správně validovány a testovány. Dále je důležité používat pouze ty vlastnosti, které jsou nezbytné pro funkčnost aplikace, a vyhýbat se nebezpečným kombinacím. více podrobností o konkrétních metodách a best practicech pro bezpečnou implementaci CSS.
Závěr: Bezpečnost CSS jako prioritní oblast
Bezpečnostní rizika spojená s CSS jsou často podceněna, ale jejich důsledky mohou být vážné. V současné době je nutné zvýšit povědomí vývojářů o těchto rizicích a zajistit, aby byly implementovány bezpečné postupy. GreenLuck.cz nabízí specializované audity a školení, která pomáhají řešit tyto problémy a minimalizovat rizika.
Vývojáři by měli být povědomi o nebezpečných vlastnostech CSS a jejich možném zneužití. Zde je několik základních doporučení, která mohou pomoci minimalizovat rizika:
- Vždy validovat a testovat všechny CSS vlastnosti, které jsou dynamicky generované.
- Zamezit použití nebezpečných pseudoelementů a vlastností, které mohou ovlivnit obsah dokumentu.
- Omezit přístup k CSS vlastnostem, které mohou být zneužity pro manipulaci s daty.
- Používat pouze standardní a bezpečné vlastnosti CSS, které jsou ověřené a podporované.
- Vždy kontrolovat a dokumentovat všechny změny v CSS kódu, aby se minimalizovaly rizika.
- Vytvořit systém pro pravidelné audity a aktualizace bezpečnostních postupů.