Vad är Kodinjektion och hur du kan undvika det
Kodinjektionssårbarheter är en allmän term som beskriver sårbarheter som kan utnyttjas av en angripare för att injicera och köra skadlig kod.
denna sårbarhet uppstår vanligtvis på grund av bristen på otillförlitlig datavalidering. Applikationer som direkt utvärderar kod utan att validera den först skulle vara sårbara för denna typ av attack.
Kodinjektion förväxlas ibland med andra sårbarheter som och Kommandoinjektion. Det bör noteras att Kodinjektion är en annan typ av sårbarhet, varigenom en angripare injicerar kod istället för Operativsystemkommandon. Detta innebär att när det gäller sårbarheter för Kodinjektion begränsas angriparen av programmets språkfunktionalitet.
Attackerbegränsningar
vid utnyttjande av sådana sårbarheter begränsas angripare av programmets språk (t.ex. PHP / Python) – funktionalitet. Men i de flesta fall kan angriparen utnyttja tolkens funktionalitet för att övergå från Kodinjektion till Kommandoinjektion.
om en angripare till exempel injicerar PHP-kod i en webbapplikation, skulle angriparen begränsas av den funktionalitet som finns tillgänglig av PHP-tolken. När injektionsattacken inträffar skulle PHP-tolken utföra den injicerade koden och bero på tolkens funktionalitet, en angripare kan utnyttja programkörningsfunktioner som är tillgängliga i PHP som system() eller shell_exec för att utföra systemkommandon.
effekten av en Kodinjektion
effekten som en lyckad attack skulle ha kan variera beroende på flera faktorer, såsom språket som används av applikationen, funktionaliteten som är tillgänglig via applikationen etc.
men i de flesta fall kan en framgångsrik attack helt äventyra sekretess, integritet och tillgänglighet för applikationen och dess data.
exempel
Föreställ dig en webbapplikation som skickar otillförlitliga data, till exempel användarens inmatning till en PHP eval () – funktion. Funktionen eval () utvärderar helt enkelt en sträng som PHP-kod så länge den har giltig PHP-syntax och slutar med en semikolon.
<?php
$ backup = “”;
$input = $_GET;
eval (“\$backup = \$input;”);
?>
eftersom applikationen passerar användarens inmatning i den farliga PHP eval () – funktionen och det inte utförs någon validering, skulle applikationen vara sårbar för Kodinjektionsattacker.
en angripare kan utnyttja denna svaghet genom att leverera ingången 1; phpinfo (); som visas nedan:
https://example.com/index.php?arg=1;https://example.com/index.php?arg=1; phpinfo();
kör OS-systemkommandon
efter att ha verifierat sårbarheten kunde en angripare fortsätta med att utföra systemkommandon genom att utnyttja tolkens funktioner som tillåter kommandokörning. I detta fall används funktionen system ().
https://example.com/index.php?arg=1;https://example.com/index.php?arg=1; system (‘whoami’);
whoami-kommandot skriver ut användarnamnet för den aktuella användaren när den anropas. Detta innebär att när applikationen
skickar användarens inmatning till eval () – funktionen, skulle PHP-tolken utföra whoami-kommandot på
underliggande operativsystem.
när angriparen kan utföra systemkommandon kan de fortsätta med att få ett interaktivt skal på det sårbara
systemet och utföra andra attacker mot andra system inom det komprometterade systemets interna nätverk.
förebyggande
oavsett vilket språk som används kan Kodinjektionssårbarheter undvikas genom att följa de bästa metoderna
som beskrivs nedan:
- Undvik att utvärdera otillförlitliga data
◦ om det inte är absolut nödvändigt, utvärdera inte direkt otillförlitliga data med hjälp av osäkra funktioner som eval(). * Behandla alla data som otillförlitliga
Brasilien Observera att otillförlitliga data inte bara hänvisar till inmatningarna som tillhandahålls via HTML-formulär. Information som kontrolleras av användare som cookies, http-förfrågningshuvuden och uppladdade filer ska behandlas som otillförlitliga.
- Valideraoförtrodda Data
◦ validera alltid användarinmatning på serversidan.
Brasilien om användaren ska skicka in inmatning i ett specifikt format som datum, Postnummer, nummer, e-post
adress, etc, se till att användarens inmatning matchar det förväntade formatet.
Brasilien om ansökan förväntar sig ett värde inom en begränsad uppsättning alternativ, Följ en vitlista och se till att
inmatningen är ett av de tillåtna alternativen.
- härda tolken
◦ till exempel bör PHP-tolkens funktionalitet begränsas till den minsta minsta funktionalitet som krävs för att applikationen ska fungera. Detta kan göra det mycket svårare för angripare att utföra systemkommandon. Till exempel kan PHP-programmets exekveringsfunktioner inaktiveras genom att ändra php.INI-fil.
- statisk analys
◦ utför statiska analysaktiviteter för att identifiera sårbarheter relaterade till osäker utvärdering.
- VAPT
◦ utföra regelbundna sårbarhetsbedömningar och penetrationstester för att identifiera och mildra sådana svagheter.