mi a Kódinjekció és hogyan lehet elkerülni

a Kódinjekciós sebezhetőségek egy általános kifejezés, amely leírja azokat a sebezhetőségeket, amelyeket a támadó kihasználhat rosszindulatú kódok befecskendezésére és végrehajtására.

ez a biztonsági rés általában a nem megbízható adatok érvényesítésének hiánya miatt fordul elő. Azok az alkalmazások, amelyek közvetlenül értékelik a kódot anélkül, hogy először ellenőriznék, sebezhetőek lennének az ilyen típusú támadásokkal szemben.

a Kódinjekciót néha összekeverik más sebezhetőségekkel, például a Parancsinjekcióval. Meg kell jegyezni, hogy a Kódinjekció más típusú biztonsági rés, amelynek során a támadó kódot injektál az operációs rendszer parancsai helyett. Ez azt jelenti, hogy a Kódinjekciós sebezhetőségek tekintetében a támadót korlátozza az alkalmazás nyelvi funkcionalitása.

támadók korlátai

az ilyen sebezhetőségek kihasználásakor a támadókat az alkalmazás nyelve (például PHP / Python) korlátozza. A legtöbb esetben azonban a támadó képes lehet kihasználni a tolmács funkcionalitását a Kódinjekcióról a Parancsinjekcióra való áttéréshez.

például, ha egy támadó PHP kódot fecskendez be egy webes alkalmazásba, a támadót korlátozza a PHP tolmács által elérhető funkcionalitás. Amikor az injekciós támadás bekövetkezik, a PHP tolmács végrehajtja az injektált kódot, és a tolmács funkcionalitásától függően a támadó kihasználhatja a PHP-ben elérhető programvégrehajtási funkciókat, például a system() vagy a shell_exec a rendszerparancsok végrehajtása érdekében.

a kódinjekció elkerülése

a Kódinjekció hatása

a sikeres támadás hatása számos tényezőtől függhet, például az alkalmazás által használt nyelvtől, az alkalmazás által elérhető funkcionalitástól stb.

azonban a legtöbb esetben egy sikeres támadás teljesen veszélyeztetheti az alkalmazás és adatai titkosságát, integritását és elérhetőségét.

példa

Képzeljünk el egy webes alkalmazást, amely nem megbízható adatokat, például a felhasználó bemenetét továbbítja egy PHP eval () függvénynek. Az eval () függvény egyszerűen kiértékel egy stringet PHP kódként, amennyiben érvényes PHP szintaxissal rendelkezik, és pontosvesszővel végződik.

<?php

$ biztonsági mentés = “”;

$input = $_GET;

eval (“\$backup = \ $input;”);

?>

mivel az alkalmazás továbbítja a felhasználó bemenetét a veszélyes PHP eval() függvénybe, és nincs érvényesítés, Az alkalmazás sebezhetővé válik a Kódinjekciós támadásokkal szemben.

a támadó kihasználhatja ezt a gyengeséget az 1; phpinfo () bemenet megadásával; az alábbiak szerint:

https://example.com/index.php?arg=1;https://example.com/index.php?arg=1; phpinfo();

os rendszerparancsok végrehajtása

a biztonsági rés ellenőrzése után a támadó folytathatja a rendszerparancsok végrehajtását az interpreter parancs végrehajtását lehetővé tevő funkcióinak kihasználásával. Ebben az esetben a rendszer() funkciót használják.

https://example.com/index.php?arg=1;https://example.com/index.php?arg=1; rendszer (‘whoami’);

a whoami parancs kiírja az aktuális felhasználó felhasználónevét, amikor meghívják. Ez azt jelenti, hogy amikor az alkalmazás

átadja a felhasználó bemenetét az eval() függvénynek, a PHP tolmács végrehajtja a whoami parancsot a

mögöttes operációs rendszeren.

amint a támadó végre tudja hajtani a rendszerparancsokat, folytathatják egy interaktív héj megszerzését a sebezhető

rendszeren, és további támadásokat hajthatnak végre a veszélyeztetett rendszer belső hálózatán belüli más rendszerek ellen.

megelőzés

a használt nyelvtől függetlenül a Kódinjekciós sebezhetőségek elkerülhetők az alábbiakban ismertetett legjobb gyakorlatok követésével

:

  • kerülje a nem megbízható adatok értékelését

◦ hacsak nem feltétlenül szükséges, ne értékelje közvetlenül a nem megbízható adatokat nem biztonságos funkciók, például az eval () használatával. * Kezelje az összes adatot nem megbízhatóként

GmbH vegye figyelembe, hogy a nem megbízható adatok nem csak a HTML űrlapokon keresztül biztosított bemenetekre vonatkoznak. A felhasználók által ellenőrzött információkat, például a cookie-kat, a HTTP kérés fejléceit és a feltöltött fájlokat nem megbízhatónak kell tekinteni.

  • Érvényesmegbízatlan adatok

◦ mindig ellenőrizze a felhasználói bevitelt a szerver oldalon.

ha a felhasználónak meghatározott formátumban, például dátum, irányítószám, számok, e-mail

cím stb.kell megadnia a bemenetet, győződjön meg arról, hogy a felhasználó bemenete megfelel a várt formátumnak.

ha az alkalmazás korlátozott számú opción belül vár egy értéket, kövesse az engedélyezőlista megközelítést, és győződjön meg arról, hogy

a beküldött bemenet az engedélyezett opciók egyike.

  • Harden a tolmács

◦ például a PHP tolmács funkcionalitását az alkalmazás működéséhez szükséges minimális funkcionalitásra kell korlátozni. Ez sokkal nehezebbé teheti a támadók számára a rendszerparancsok végrehajtását. Például a PHP program végrehajtási funkciói letilthatók a php módosításával.ini fájl.

  • statikus elemzés

◦ végezzen statikus elemzési tevékenységeket a nem biztonságos értékeléssel kapcsolatos sebezhetőségek azonosítása érdekében.

  • VAPT

◦ rendszeresen végezzen sebezhetőségi felmérést és penetrációs tesztelési tevékenységeket az ilyen gyengeségek azonosítása és enyhítése érdekében.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.