Megosztás a következőn keresztül:


Puffertúllépések elkerülése

A puffertúlcsordulás a biztonsági kockázat egyik leggyakoribb forrása. A puffertúlcsordulást alapvetően a nem ellenőrzött külső bemenetek megbízható adatokként való kezelése okozza. Az adatok másolása olyan műveletek használatával, mint például CopyMemory, strcat, strcpyvagy wcscpy, nem várt eredményeket hozhat létre, ami lehetővé teszi a rendszer sérülését. A legjobb esetben az alkalmazás leáll egy magkivonattal, szegmentálási hibával vagy hozzáférés-megsértéssel. A legrosszabb esetben a támadó kihasználhatja a puffertúlcsordulást a folyamat egyéb rosszindulatú kódjainak bevezetésével és végrehajtásával. A kihasználható hibák leggyakoribb oka a nem ellenőrzött bemeneti adatok veremalapú pufferbe másolása.

A puffertúlcsordulások többféleképpen is előfordulhatnak. Az alábbi lista rövid áttekintést nyújt a puffertúllépési helyzetek néhány típusáról, és néhány ötletet és erőforrást tartalmaz, amelyek segítenek elkerülni az új kockázatok létrehozását és a meglévők mérséklését:

Statikus puffer túllépések

Statikus puffertúlcsordulás akkor fordul elő, ha egy, a veremen deklarált pufferbe több adat kerül, mint amennyit annak tárolására lefoglaltak. A hiba kevésbé nyilvánvaló verziói akkor fordulnak elő, ha a rendszer közvetlenül egy statikus változóba másolja a nem ellenőrzött felhasználói bemeneti adatokat, ami potenciális veremsérülést okoz.

Halom túlfutása

A halomtúllépések, például a statikus puffertúllépések memória- és veremkorruptálódáshoz vezethetnek. Mivel a halom túlfutása a halommemóriában, nem pedig a veremmemóriában fordul elő, egyesek úgy vélik, hogy kevésbé képes súlyos problémákat okozni; ennek ellenére a halom túlfutások valódi programozási felügyeletet igényelnek, és éppúgy veszélyeztethetik a rendszert, mint a statikus puffertúlfutások.

tömbindexelési hibák

A tömbindexelési hibák a memória túlfuttatásának forrásai is. A gondos korlátok ellenőrzése és az indexkezelés segít megelőzni az ilyen típusú memórialefutást.

A puffertúllépések megakadályozása elsősorban a jó kód írásáról szól. Mindig ellenőrizze és érvényesítse az összes bemenetet, és szükség esetén kezelje elegánsan a hibákat. A biztonságos kód írásával kapcsolatos további információkért tekintse meg a következő erőforrásokat:

  • Maguire, Steve [1993], Írás Solid Code, ISBN 1-55615-551-4, Microsoft Press, Redmond, Washington.
  • Howard, Michael and LeBlanc, David [2003], Writing Secure Code, 2d ed., ISBN 0-7356-1722-8, Microsoft Press, Redmond, Washington.

Jegyzet

Előfordulhat, hogy ezek az erőforrások egyes nyelveken és országokban nem érhetők el.

 

A biztonságos sztringkezelés egy régóta fennálló probléma, amely mind a helyes programozási eljárások követésével, mind a meglévő rendszerek biztonságos, sztringkezelő funkcióval történő használatával és utólagos beépítésével továbbra is megoldható. A Windows-rendszerhéj ilyen függvénykészletére példa StringCbCat.