A03:2021 – Injection

A03:2021 – Injekzioa

Celia Catalán

Injekzioak ahultasun mota bat dira, erasotzaile batek interpretatzaile bati eskaera edo kontsulta baten bidez fidagarriak ez diren datuak bidaltzean, exekuzio-fluxuan edo hasieran aplikaziorako aurreikusitako portaeran etetea eragiten duena. 

Horrela, erasotutako sistemari buruzko informazio gehigarria ateratzetik, erabiltzailearen saio baten lapurreta edota komandoak urrunetik exekutatzeko eta, ondoren, aplikazioa hartzen duen web zerbitzaria bera bereganatu arte ekintzak burutu daitezke.

OWASP Top 10-aren ondorengo edizioetan injekzioak kritikoen eta konstanteen gisa sailkatu dira, xede-makinaren erabateko kontrola ekar dezaketelako. Izan ere, 2021era arte zerrendako lehen postuan egon dira edizio guztietan, eta hirugarren postura jaitsi da.

Injekzio motak

Erabiltzen den interpretearen, erabiltzen den hizkuntzaren edo zerbitzariaren backend-ean erabiltzen den biltegiratze-sistemaren araberakoa denez neurri handi batean, injekzio ezberdin ugari ere gerta daitezke, hala nola:

Inyecciones SQL (SQLi - SQL injekzioak) 

Erlazionalak ez diren datu-baseetan dauden datuak nahi gabeko manipulazioa ahalbidetzen du, datu-informazioa aldatu edo aldatuz, edo dauden autentifikazio- eta/edo baimen-sistemei ihes egitea ahalbidetzen du. 

Aditu ez direnek uste ohi dutenaren aurka, injekzio mota hauek ez dira "90eko hamarkadako gauza". Gaur egun, SQL (Structured Query Language) motako injekzioak erabiltzen dira oraindik, datu-base erlazionalen kontsultetan edo aldaketetan erabiltzen direnak. Adibide argia ere askotan izan da, TSA (Transportation Security Administration) sisteman detektatutako ahultasunetako batean frogatu denez, sistema jakin bat erabiltzen zuten 77 aire-konpainiaren segurtasuna alde batera utzi ahal izateko mota honetako injekzio hutsalenak. 

NoSQL injekzioak (NoSQLi -NoSQL injekzioak)

Erlazionalak ez diren datu-baseen agerpenarekin, hala nola, MongoDB (datuak BSON-en gordetzen diren, JSON-en antzeko datu-formatu batean), CouchDB edo Redis, injekzio mota aldatzen da informazio mota honetara egokitzeko, baina Emaitza daiteke. bezain suntsitzailea izan. 

Agindu Injekzioak (CI- Agindu Injekzioak)

Kasu honetan, "injektatzen" direnak azpiko sistema eragilean nahi ez diren komandoak dira. 

Inyecciones LDAP (LDAPi - Ligthweight Directory Access Protocol injections)

Kasu honetan, injekzioaren ustiapena LDAP edo Lightweight Directory Access Protocol kontsulten nahi gabeko manipulazioak eragiten du, sareko baliabideak sartzeko edo manipulatzeko edo web aplikazioan protokolo mota hau erabiltzen duten erabiltzaileen autentifikazioak. 

Inyecciones XML (XMLi - XML ​​injekzio, XXE - XML ​​eXternal Entity injection)

Kasu honetan, zerbitzariari egindako XML eskaerak kontrolatu gabeko entitateak sartzeko manipulatzen dira, baita erasotzaile makinatik bertatik kargatutako kanpoko entitateak ere (XXEren kasuan), barne fitxategiak irakurri ahal izateko edo baita urruneko komandoen exekuzioa egiteko ere. 

XPath injekzioak

Kasu honetan, XPath-en kontsulten (XML Path lengoaia) manipulazioa gehiegi erabiliko da XML dokumentuetako datuak edo atributuak atzitzeko edo aldatzeko. 

Cross Site Scripting erabiltzea (XSS - CrossSite Scripting)

Mota honetako injekzioetan, hasieran, “bezeroaren” aldetik injekzioak hartzen dira, batez ere web-aplikazioen eta erabiltzaileen nabigatzailean gertatzen denaren arteko harremanean eragiten baitute. 

Baina hasiera batean bereziki garrantzitsua ez den gertakari hori ez da horrela, islatutako XSS batek nortasun lapurreta erasoak edo erabiltzaileen saioen lapurreta ekar dezakeela edo, gordetako kasuan, bat arriskuan jar dezakeela kontuan hartzen bada. azpiegitura osoa eta ez soilik web aplikazioaren itxuragabetzea edo desitxuratzea. 

Gainera, beste eraso mota batzuekin konbinatuta (aipatutako SQLi, edo SSRF-Server-Side Request Forgery, CSRF edo XSRF-Cross-Site Request Forgery...) bereziki arriskutsuak izan daitezke. 

JavaScript (edo bezeroan erabiltzen diren antzeko script-lengoaiak, hala nola, vbscript, gaur egun ohikoa ez den arren) eta HTML (HTMLi edo HTML Injection) erabiltzeagatik nabarmentzen dira. 

Zerbitzariaren alboko txantiloien injekzioa (SSTI)

Web zerbitzarietan, hala nola PHP, Spring Java, Flask/Django Python, Express (Node.js), backend tradizionaletan esparru berriak sortu zirenean, web zerbitzarian txantiloiak prozesatzeko motor ezagun batzuk sortu ziren, hala nola Jinja edo Jinja2. (Python), Twig (PHP), Pug/Jade (Node.js), EJS (JavaScript), Freemarker (Java), etab. 

Eta horiekin batera, injekzio mota berriak dauden txantiloi hauek abusatzen dituztenak, non, komando zehatzen manipulazio eta injekzio egokiaren bidez, erasotzaile batek zerbitzariaren ingurune osoarekin elkarreragin dezake, lehendik dauden fitxategi edo zerbitzuekin, edo baita sistema bera ere operatiboarekin. 

ORM injekzioa (Objektu-erlazio-mapaketa injekzioa)

Objektu-orientazioa erabiliz abstrakzio-geruza erabiltzea oso desiragarria den SQL edo NoSQL injekzio motak zehatz-mehatz saihesteko, SQL kateen zuzeneko eraikuntza eta manipulazioa saihestuz, ORM inplementazio txarrak datu baseen informazioa aurkitzea ekar dezake. Mota honetako objektuen logika manipulatzen duten kontsulta dinamikoen bitartez, SQLi batekin egingo litzatekeenaren antzera. 

Zentzu honetan, hainbat injekzio-modu aurkitu dira ORM ezagunetan, hala nola SQLAlchemy (Python-erako) edo Hibernate (Java-rako). 

Kode Injekzioak

Injekzio mota honen gehiegikeria web aplikazioan kode dinamikoa exekutatzeko erabiltzen den hizkuntza motaren araberakoa da soilik. Adibidez, PHP (eval()) edo Python bezalako funtzioekin. 

Formateatu String Injection

Hemen injekzioa erabiltzailearen sarrerako datuak manipulatzeko erabiltzen diren kate formatuko funtzioetan emango litzateke, eta horrek zerbitzariaren aldean nahi ez den informazioa agertzea ahalbidetuko luke, edo kode arbitrarioa ere exekutatzeko. 

Adierazpen erregular injekzioak (Regex injekzioa)

Injekzio mota hauen ustiapena sisteman erabiltzen diren zenbait esamolde erregular ezartzearen laxotasunak ematen du orokorrean, hauen manipulazioa ahalbidetuz erasoak egiteko informazio gehigarria lortzeko, iragazkien saihespena edota Zerbitzuaren ukapena (DoS) erasoak. ).

HTTP goiburuko injekzioa

Kasu honetan injekzioa zerbitzariari bidalitako eskaeren HTTP goiburuan ematen da, beste eraso mota batzuk ahalbidetuz, hala nola cachearen pozoitzea (Cache Poisoning) edo aplikazioaren saioan erabilitako cookieen manipulazioa. 

Izan ere, ohikoa da burukoen barruan aipatutako beste injekzio mota batzuk ere erabiltzea. 

Zergatik gertatzen dira injekzioak?

Injekzio gehienak arrazoi arrunt bategatik gertatzen dira, backend-ean erabiltzen den hizkuntza, zabaldutako azpiegitura edo zerbitzariaren konfigurazioa edozein dela ere, eta horrek injekzio mota batzuk edo beste batzuk erabiltzeko aukera bultzatuko du. 

Arrazoi nagusia erabiltzaileen sarrerako datuak baliozkotzeko kontrolik eza da, baita zerbitzarirako informazioaren irteera (edo geruza zeharkako prozesamendua ere).

Ez da ahaztu behar bezeroaren aldetik iragazkiak pasatu ondoren hasierako eskaerak atzeman daitezkeela, eta zerbitzariari ere eragin diezaioten manipulatu, betiere kontrolak eta balioztapenak bereziki alde honetan ezarri ez badira.

Eraso mota hauek ere ez dira web aplikazioei soilik eragiten dieten eraso gisa pentsatu behar, deskribatutako horietako asko injekzioak posibleak izanik (batez ere SQLi) web bezero-zerbitzari ez diren arkitektuetan (bezeroa eta zerbitzaria makina berean daudenean ere). .

Arintzeko neurriak

Honako hauek ematen dira gomendio nagusi gisa:

  • Zero konfiantzazko politika ezarri behar da aplikazio batek jaso ditzakeen sarrerei buruzko guztian, desinfektazio egokia ezarriz, nahi ez diren karaktereei ihes egiteko moduan (zerrenda beltzak erabiltzea saihestu ahal den neurrian eta karaktereen ihesari buruzko segurtasun funtzionaltasunekin ordezkatuz). erabilitako teknologien arabera). 
  • Gainera, datu-basearen zerbitzarietarako sarbidearen kasuan, datu-baseen hornitzaile bakoitzaren segurtasun-gomendioei jarraituz, baita erabilitako teknologiari ere, kontsulta parametrizatuak erabiltzea gomendatzen da. 
  • Datu-baseen abstrakzio egokiak egin behar dira SQL kontsulten zuzeneko eraikuntza saihesteko ORM (Object-Relational Mapping) zuzen erabiliz. 
  • Aurrekoa edozein izanda ere, sarbide-kontrol zuzena ezarri behar da, zerbitzarian baimenak mugatuz, bai exekutatzen ari den web-zerbitzurako, bai datu-baserako sarbidea, edo aplikazioa exekutatzen ari den direktorio zehatzetara, sarbide hori horrela zerbitzariaren beste eremuetara oso mugatuta dago. 

Modu honetan, “pribilegio txikienaren printzipioa” ezarriz, balizko erasotzaile baten ondorengo urratsak ahal den neurrian mugatuko dira, eraso horietakoren bat ustiatzen arrakasta izan badute. 

  • Jo ezazu babes-geruza gehigarrietara, hala nola WAF (Web Application Firewall) bat exekutatu, mota honetako erasoak geldiarazteko ondo zehaztutako arauekin edo injekzio saiakeretan automatizazio posiblea blokeatzea. 

Jakina, sistema mota honetan bakarrik eta itsu-itsuan fidatu gabe, horiek ere saihestu daitezkeenak. 

Itzuli blogera

Utzi iruzkin bat

Kontuan izan iruzkinak argitaratu aurretik onartu behar direla.