Často vzniká z chybějících nebo nesprávných kontrol délky v jazycích umožňujících přímý přístup k paměti. Výsledky sahají od poškozených dat a pádů až, za některých podmínek, k neoprávněnému spuštění kódu.
Buffery mohou ležet na zásobníku, haldě nebo jiných paměťových oblastech a slabost může zahrnovat nebezpečné kopírování, nesprávný výpočet velikosti nebo zápis mimo meze. Přepsané umístění, kontrola útočníka, platforma a runtime ochrany formují zneužitelnost a důsledky.
Klíčové body
Snížení kořenové příčinyKde je to proveditelné, preferujte paměťově bezpečné jazyky a rozhraní, validujte délky a celočíselné výpočty, vyhýbejte se neomezeným operacím a revidujte interakce s nativními či jinak paměťově nebezpečnými komponentami.
VerifikacePoužívejte cílenou revizi kódu, statickou analýzu, diagnostiky překladače, sanitizery, fuzzing a regresní testy k nalezení vad a potvrzení, že opravy pokrývají podkladovou třídu.
Runtime vrstvyOchrany překladače a operačního systému jako canary, nespuštitelná paměť a randomizace adres mohou některé zneužití ztížit, zatímco izolace a princip nejmenších oprávnění mohou omezit důsledky.
Důležité omezeníPřetečení vyrovnávací paměti automaticky nepovoluje spuštění kódu; může pouze poškodit data nebo ukončit proces. Runtime mitigace jsou hloubková obrana, nikoli náhrada za odstranění vadné paměťové operace.