A08:2021 - Software and Data Integrity Failures

A08:2021 - Software eta Datuen Integritate Akatsak

Celia Catalán


Atal honetan OWASP Top Ten-en, A08:2021 - Software and Data Integrity Failures edo euskaraz A08:2021 - Softwarearen eta datuen integritatearen akatsak buruz hitz egingo dugu.

Ahultasunaren deskribapena

Vulnerabilitate mota hau agertzen da aplikazioa ez dagoenean behar bezala babestuta kritikoak diren datuen edo softwareko osagaien manipulazioaren aurka, eta horrek datuen aldaketak, ordezkapen erasotzaileak edo baimenik gabeko kode injezioak eragin ditzake. Kategoria honek zehazki arriskuak barne hartzen ditu, hala nola softwareko eguneratzeetan, kanpoko liburutegietan edo datuen konfigurazio kritikoetan integritate falta.

Eragina

'Hau da ahultasun honen eragina presente dagoen sistemetan eta aplikazioetan:'

  • Kode injezioak: Erasotzaileek softwarea eta aplikazioak konprometitu ditzakete sistema barruan exekutatzen den kodea injetatuz. Honek baimenik gabeko sarbidea, datuen iragazketa edo sistemaren funtzionaltasunaren aldaketa ekar dezake.
  • Softwarearen hornidura konpromisoa: Eragile batek hainbat erakundek erabiltzen duten menpekotasun edo liburutegi bat konprometitzen badu, eragina zabala izan daiteke, osagai horren menpe dauden aplikazio askori eraginez.
  • Pribilegioak igotzeko edo zerbitzuaren ukatzean erasotzea: Sistema kritikoen konfigurazioak aldatzea edo pribilegioak igotzeko aukera ematen duten ahultasunak sartzea posible da, azpiegitura konprometitzen edo bere funtzionamendu egokia oztopatuz.

OWASP Top Ten-en beste ahultasunekin duten harremana

  • A06:2021 - Ahul eta Zaharkituta dauden Osagaiak: Ahultasun hau osagai seguruak edo eguneratu gabeak erabiltzearekin estu lotuta dago, softwarearen integritate falta askotan ahul diren menpekotasunak barne hartzen ditu.
  • A07:2021 - Identifikazio eta Autentifikazio Akatsak: Autentifikazio konfigurazioak behar bezala babestuta ez badaude, erasotzaileek datuen integritatearen akatsak aprobetxatu ditzakete mekanismo hauek manipulatzeko.
  • A09:2021 - Segurtasun Logistika eta Monitorizazio Akatsak: Monitorizazio egokirik eza softwarearen edo datuen integritatean akatsak igarotzea eragin dezake, ustiapen arriskua handituz.

Adibide praktikoa

Deserializazio Segurtasunik Gabea

Deserilizazio ez segurua gertatzen da webgune batek erabiltzaileak kontrolatutako datuak deserilizatzen dituenean. Honek erasotzaile bati aukera ematen dio objektu serilizatuak manipulatzeko aplikazioaren kodean datu kaltegarriak sartzeko.

Zenbait kasutan, erasotzaileak objektu seriatua klase oso desberdineko batekin ordezkatu dezake. Kezkagarria da webgunean eskuragarri dagoen klase bateko edozein objektu deserializatuko eta instantziko dela, jatorriz espero zen klasea kontuan hartu gabe. Arrazoi honengatik, deserializazio ez-seguruak "objektuen injezio" ahultasun gisa ezagutzen dira.

Klase ezohiko bateko objektu batek salbuespen bat sor dezake, baina askotan kaltea jada gertatu izango da. Izan ere, deserializazioan oinarritutako hainbat erasok prozesua amaitu baino lehenago burutzen dira. Honek esan nahi du deserializazio prozesuak berak eraso hori piztu dezakeela, webguneak ez badu zuzenean interakzionatzen objektu gaiztoarekin. Beraz, tipifikazio estua duten hizkuntzak erabiltzen dituzten webguneek ere teknikak hauekiko ahultasunak izan ditzakete.

Serializatutako objektuen manipulazioa

Deserializazioaren ahultasun batzuk ustiatzea objektu serializatu batean atributu bat aldatzea bezain erraza izan daiteke. Objektuaren egoera mantentzen denez, datu serializatuak aztertu daitezke atributu garrantzitsuen balioak identifikatzeko eta aldatzeko. Ondoren, objektu gaiztoa webgunean bidali daiteke bere deserializazio prozesuaren bidez. Hauxe da deserializazioaren aurkako eraso oinarrizko baten hasierako pausoa.

Orokorrean, bi hurbilpen daude objektu serializatuak manipulatzeko. Objektua zuzenean bere byte-fluxu formatuan editatu daiteke, edo, bestela, hizkuntza egokian script txiki bat idatzi dezakezu objektu berria sortu eta bere kabuz serializatzeko. Azken hurbilpen hau normalean errazagoa da serializazio binario formatuak lantzean.

Objektu seriatutakoen atributuen aldaketa

Datuak manipulatzeko, beti ere erasotzaileak baliozko serializatutako objektu bat mantentzen badu, deserializazio prozesuak zerbitzarian atributuen balio aldatuak dituen objektu bat sortuko du.

Adibide gisa, erabiltzailearen baliozko pribilegiorik gabeko kredentzialak dituen web batera sartzen da eta webak saio-cookie bat sortzen du, hurrengo irudian ikus daitekeen bezala:


Hurrengoan, aplikazioaren atalean erabiltzailearen kontuaren datuak HTTP GET metodoa erabiliz eskuratzen direnean, saio cookiea ere bidaltzen dela ikusten da.


Saio-cookie hau base64-n URL kodetzearekin bidaltzen da, beraz, deserializatuz gero, bertan bidalitako objektuak eta eremuak ikusi daitezke.


Cookiea testu arruntean aztertzean, "admin" objektua boolean motakoa dela eta 0 balioa duela ikusi daiteke, hau da, pribilegiorik gabeko erabiltzailea. Hori ikusita, web aplikazioak erabiltzaile batek pribilegioak dituen edo ez detektatu dezake parametro horren arabera.

"Orain "admin" booleano balioa 0-tik 1-era aldatzen bada eta eskaera egiten bada, erabiltzaileak datu serializatuak aldatzea saihesteko kontrol mekanismorik ez dagoenez, Administratzaileko pribilegioak igotzea posible izango da eta, beraz, webguneko administrazio panelera sartzea."



Aringarriak

OWASP-ek gomendatutako arintze neurriak ahultasun honen eragina minimizatzeko honako hauek dira:
  • Digital sinadurak edo antzeko mekanismoak erabiltzea softwarea edo datuak jatorrizko iturritik datozen eta ez direla aldatu egiaztatzeko.
  • Liburutegiak eta menpekoak, hala nola npm edo Maven, fidagarriak diren biltegietatik lortzen direla ziurtatu behar da. Aplikazioak arrisku profila altua badu, fidagarri den barne biltegi bat ostatatzea kontuan hartu daiteke.
  • Software hornidura katearen segurtasunerako tresnak erabiltzea, hala nola OWASP Dependency Check edo OWASP CycloneDX, osagaiek ez dituztela ezagutzen diren ahultasunak egiaztatzeko.
  • Kodean eta konfigurazioan aldaketen berrikusteko prozesu bat ezartzea, pipeline-an kode edo konfigurazio kaltegarririk sartzeko aukera minimizatzeko.
  • Ziurtatu CI/CD pipeline-ak segregazio, konfigurazio eta sarbide kontrol egokiak dituela, eraikuntza eta desplegu prozesuen bidez doan kodearen integritatea bermatzeko.
  • Ziurtatu sinatu gabe edo enkriptatu gabe dauden datu serializatuak ez direla bidaltzen bezero ez fidagarrietara inolako integritate egiaztapenik edo sinadura digitalik gabe, datu serializatuen manipulazioa edo erreprodukzioa detektatzeko.


Ondorioak

A08:2021 - Software eta Datuen Integritatearen Akatsak ahultasun kritikoa da, aplikazioen segurtasuna arriskuan jartzen duena, softwarearen eta datuen egiazkotasuna eta fidagarritasuna bermatzen dituzten mekanismoak behar bezala aseguratzen ez direnean. 

Hau saihesteko, funtsezkoa da neurriak ezartzea, hala nola sinadura digitalen erabilera, mendekotasunen eta software liburutegien kudeaketa segurua, konfigurazio kritikoen babesa eta garapen zikloaren zehar segurtasun kontrolak integratzea, horrela aplikazioaren datuen integritatea handituz.

Justo Martin, Zibersegurtasun Analista Zerolynx-en.


Itzuli blogera

Utzi iruzkin bat

Kontuan izan iruzkinak argitaratu aurretik onartu behar direla.