Hirdetés

Amit a puffertúlcsordulásról tudni kell

|

A hackerek által a rendszer feltörésére használható sérülékenységet tartalmaznak azok a szoftverek, amelyek több adatot írnak egy memóriapufferbe, mint amennyit az tárolni képes. A biztonságot szem előtt tartó szoftverfejlesztési gyakorlatok megakadályozzák a puffertúlcsordulások létrejöttét.

Hirdetés

A puffertúlcsordulás egy memóriabiztonsági probléma, amelynél egy program nem megfelelően ellenőrzi egy allokált, fix hosszúságú memóriapuffer határait, és több adatot ír a pufferbe, mint amennyit az tárolni képes. Ez adattúlcsodulást okoz a környező memóriaterületre, felülírva az ott található információkat, ami gyakran vezet összeomláshoz és a hackerek által kihasználható állapotokhoz.

A puffertúlcsordulások az egyik legrégebbi és leginkább elterjedt okai a tetszőleges kód végrehajtását lehetővé tevő sérülékenységeknek, és a C vagy C++ programozási nyelveken írt alkalmazásokban gyakoribbak az ilyen kódolási hibák, mint a más nyelvek segítségével készített programokban. A hibák elkerülése érdekében a fejlesztői közösség biztonságos kódolási gyakorlatokat dolgozott ki, a jelentősebb szoftverszállítók pedig bevezették ezeket bizonságos fejlesztési ciklusaik részeként.

Egyre nő a sérülékenységek száma
A sérülékenységeket listázó Common Weakness Enumeration (CWE) katalóust gondozó The MITRE Corporation 2019 szeptemberében közzétette a sebezhetőségek 25-ös toplistáját, amelynek élén a CWE-119-es kódjelű "Improper Restriction of Operations within the Bounds of a Memory Buffer" biztonsági hiányosság állt. Ez a pufferkezelési hibák kiterjesztett kategóriája, amely tartalmazza a puffertúlcsordulásokat is.

Rendkívül meglepő az a sajnálatos tény, hogy a szoftverekben való megszüntetésére fordított több évnyi erőfeszítések ellenére a puffertúlcsordulás még mindig a leggyakoribb sebezhetőség. Azonban ez az első alkalom, hogy a MITRE frissítette a gyengeségek 25-ös toplistáját 2011 óta, és a rangsorolás egy osztályozáson alapul, amely kobinálja a sérülékenységek a National Vulnerabilities Database (NVD) adatbázis szerinti 2017-2018-as gyakoriságát a súlyosságuk fokával. Így a lista a sérülékenységek általános kockázatát tükrözi, figyelembe véve mind a gyakoriságukat, mind az általuk jelentett veszélyt.

Egy másik oka a puffertúlcsordulások ismételt reflektorfénybe kerülésének a dolgok internete (internet of things, IoT) eszközök elterjedése, amelyek az elmúlt évek kutatásai szerint sokkal gyengébb minőségű programkódot használnak, mint a megbízható szoftverszállítóktól származó, modern számítógépes alkalmazások. A beágyazott rendszerek firmware-eiben hagyományosan rengeteg a puffertúlcsordulást okozó hiba, és a helyzet nem sokat javult az évek során, mivel ezeket a kódbázisokat nem frissítették. Ugyanakkor egyre több ilyen hibás kódú, a céges hálózatokban és a háztartásokban üzemeltetett eszköz csatlakozik az internetre, ami hatalmas kockázatokkal jár együtt.

Hirdetés

Példák a puffertúlcsordulásra
A puffertúlcsordulásokat általában nagyon súlyos sérülékenységnek minősítik, mivel jogosulatlan kódvégrehajtáshoz vezethetnek olyan esetekben, amikor a támadók kontrollálni tudják a megcélzott pufferen kívüli memóriaterületet, és át tudnak irányítani egy funkció pointert a rosszindulatú kódjukra.

De még akkor is, ha nem lehetséges a tetszőleges kódvégrehajtás, a puffertúlcsordulás gyakran összeomlást eredményez, ami egy szolgáltatásbénító állapotot idéz elő, vagyis nem érhető el az adott alkalmazás. Ez különösen rossz a szerverek esetében, amelyek folyamatosan rendelkezésre állása elvárt és szükséges.

Bizonyos esetekben a támadók a puffertúlcsordulást egy alkalmazás memóriájában lévő kritikus beállítások felülírására használhatják, például módosíthatnak egy flaget, amely azt jelzi, hogy a felhasználó adminisztrátor-e vagy nem. Ez a privilégiumok eszkalációjához vezethet az alkalmazás és potenciálisan a rendszer vonatkozásában.

Végezetül a pufferhatárok nem megfelelő kezelése lehetővé teheti a támadók számára, hogy adatokat olvassanak ki a pufferen kívülről, ahelyett, hogy felülírnák azokat, így bizalmas információk kerülhetnek illetéktelen kezekbe. Bár ez az úgynevezett out-of-bound (határon kívüli) sebezhetőség különbözik a klasszikus puffertúlcsordulástól, ugyanabba a kódolásihiba-kategóriába tartozik.

Az out-of-bound olvasásokat olyan információk megszerzésére is lehet használni, amelyek révén a támadók más sérülékenységeket használhatnak ki. Például a hackerek hozzájuthatnak a kihasználást megakadályozó technológiákkal védett memóriacímekhez.

Hogyan akadályozhatjuk meg?
Mivel a puffertúlcsordulásokat programozási hibák okozzák, a legjobb módja a megakadályozásuknak a fejlesztők képzése annak érdekében, hogy elkerüljék ezeket a hibákat a munkájuk során. Sok biztonságos kódolási útmutató és könyv tárgyalja a puffertúlcsordulást, csakúgy mint a bizonságos programozói minősítést adó képzések. A CERT Coordination Center és a Carnegie Mellon Egyetem Software Engineering Institute részlege kódolási szabványt dolgozott ki több programozási nyelvhez, köztük a C-hez és C++-hoz.

A puffertúlcsordulás automatizált megakadályozásának módjai között megtalálható a memóriabiztonságos programozási nyelvek és könyvtárak használata, amelyek a puffertúlcsordulás okozására hajlamos eljárások biztonságos verzióit kínálják. Célszerű lenne továbbá a fejlesztőknek olyan alkalmazásokat készíteniük, amelyek fejlett szolgáltatásokat használnak a puffertúlcsordulások potenciális következményeinek korlátozására: címterület layout randimizációt (address space layout randomization, ASLR) és a pozíciófüggetlen végrehajthatókat (position-independent executables, PIE). Ugyancsak használniuk kellene az ilyen hibákat jelző compiler flageket és kiterjesztéseket, például a /GS flaget a Microsoft Visual Studióban, valamint a Red Hat, StackGuard és ProPolice által alkalmazott FORTIFY_SOURCE GCC flaget.

Sajnos egyik megoldás sem nyújt teljes védelmet, ezért nagy szükség van mind belső, mind külső biztonsági szakértők által végzett periódikus kódáttekintésekre és alkalmazásbiztonsági tesztelésekre, valamint integrált eszközök az automatikus tesztelési munkafolyamatba való bevonására.

Ügyfélszolgálati változás!
Hirdetés
Hirdetés

Úgy tűnik, AdBlockert használsz, amivel megakadályozod a reklámok megjelenítését. Amennyiben szeretnéd támogatni a munkánkat, kérjük add hozzá az oldalt a kivételek listájához, vagy támogass minket közvetlenül! További információért kattints!

Engedélyezi, hogy a https://computerworld.hu értesítéseket küldjön Önnek a kiemelt hírekről? Az értesítések bármikor kikapcsolhatók a böngésző beállításaiban.