Kas teid rünnatakse? Võtke ühendust intsidentidele reageerimise meeskonnaga

info@angelforce.eu
Veebiturvalisus

Turvaliste failide üleslaadimiste kavandamine ja testimine

Failide üleslaadimise kontrollide nimekiri OWASP-i juhendi põhjal ning tabel testidest, mida iga üleslaadimise lõpp-punkti vastu käivitada.

Saadaval ka:EnglishTürkçeDeutschFrançaisEspañolItalianoPolskiNederlands

Illustratsioon: Turvaliste failide üleslaadimiste kavandamine ja testimine

Turvaline failide üleslaadimise funktsioon sõltub mitmest koos rakendatavast kontrollist ning OWASP File Upload Cheat Sheet loetleb need üles. Selles artiklis käime selle loetelu läbi, toome välja punktid, mis jäävad kergesti tegemata, ning muudame loetelu testideks, mida saate käivitada iga üleslaadimise lõpp-punkti vastu.

Mille vastu te end kaitsete

Cheat Sheet rühmitab ohud pealkirja "malicious files" (pahatahtlikud failid) alla. Esimene neist on rünne faili töötleva tarkvara vastu. Ründaja esitab faili, mis kasutab ära parseri või töötlusmooduli haavatavust, ning juhendis tuuakse näidetena ImageTrick exploit ja XXE.

Teine on andmepüük. Juhendis on näiteks karjäärivorm, mis tähendab, et üleslaadimisest saab viis, kuidas panna vaenulik fail nende inimeste ette, kes selle avavad.

Kolmas on käideldavus. ZIP-pommid, XML-pommid (billion laughs attack) ja lihtsalt väga suured failid võivad täita serveri salvestusruumi ja kahjustada serveri käideldavust.

Valideerige enne vastuvõtmist

Juhend näeb ette kindla järjekorra: rakendage sisendi valideerimist enne laiendi valideerimist. Seejärel tuleb toetuda lubatud väärtuste loetelule (allowlist).

  • Loetlege lubatud laiendid. Lubage ainult need ohutud laiendid, mida äriprotsess vajab. Profiilifoto vormil pole põhjust aktsepteerida muud kui mõnda pildivormingut.
  • Valideerige faili tüüp. Ärge toetuge deklareeritud Content-Type väärtusele, sest seda saab võltsida. Valideerige faili tüüp ja signatuur enne üleslaadimise vastuvõtmist.
  • Määrake failinime pikkuse piir ja piirake lubatud märke, kui see on võimalik.
  • Määrake failisuuruse piir.

Kui fail ei läbi mõnda neist kontrollidest, lükake see tagasi.

Käsitlege nime ja asukohta hoolikalt

Juhendi järgi tuleb kasutaja antud failinimi asendada rakenduse genereeritud nimega. Tehke seda iga üleslaadimise puhul, olenemata faili tüübist.

Faili salvestuskoht on sama oluline kui faili enda sisu. Hoidke üleslaaditud faile võimaluse korral eraldi serveris. Kui see pole võimalik, salvestage need väljapoole webroot'i.

Kui failid peavad olema avalikult kättesaadavad, kasutage rakendusesisest töötlejat (handler), mis seostab identifikaatori failiga (someid → file.ext), selle asemel et avaldada salvestuskoha teed.

Veel kaks loetelu punkti, mis kipuvad ununema:

  • Faile peaksid saama üles laadida ainult volitatud kasutajad.
  • Kaitske üleslaadimist CSRF-rünnakute eest.

Skannige ja töödelge seda, mida säilitate

Valideerimine kontrollib, et fail näeb õige välja. Juhend lisab veel ühe sammu: kui võimalik, laske fail läbi viirusetõrjemootori või sandboxi, et veenduda, et selles pole pahatahtlikke andmeid.

Sobivate dokumenditüüpide, näiteks PDF ja DOCX puhul kaaluge täiendava töötlusetapina CDR-i (Content Disarm & Reconstruct).

Juhend märgib ka, et kõik kasutatavad teegid peavad olema turvaliselt konfigureeritud ja ajakohased. Kuna parserite haavatavused kuuluvad nimetatud ohtude hulka, tasub see punkt määrata nimeliselt vastutavale isikule koos ülevaatuse kuupäevaga.

Testige iga lõpp-punkti

Cheat Sheet loetleb kontrolle, mitte testjuhtumeid. Iga allolev rida on meie enda tuletis selle kontrollnimekirjast ja kolmas veerg näitab, millisest punktist see pärineb. Käivitage testid iga üleslaadimise lõpp-punkti vastu, sealhulgas administreerimisvahendite ja ühe kliendi jaoks lisatud lõpp-punktide vastu.

TestLäbitud testAlus
Laadige üles lubatud laiendiga skriptifailLükatakse tagasi faili tüübi valideerimiselTuletatud: faili tüübi valideerimine
Saatke keelatud fail koos lubatud Content-Type väärtusegaLükatakse ikkagi tagasiTuletatud: ärge usaldage Content-Type päist
Esitage väga pikk failinimiLükatakse tagasi või asendatakse genereeritud nimegaTuletatud: failinime pikkuse piir, genereeritud failinimed
Laadige üles fail, mis ületab suuruse piiriKeeldutakseTuletatud: failisuuruse piir
Küsige salvestatud faili, arvates ära selle teePole kättesaadav muidu kui töötleja kauduTuletatud: salvestuskoht, seostav töötleja
Laadige üles ilma sessioonita või ilma CSRF-tokenitaKeeldutakseTuletatud: volitatud kasutajad, CSRF-kaitse
Laadige testkeskkonnas üles ZIP- või XML-pommTeenus jääb kättesaadavaksTuletatud: käideldavuse oht

Laiema ülevaate saamiseks: OWASP Web Security Testing Guide kirjeldab ennast kui veebirakenduste arendajate ja turvaspetsialistide esmaklassilist küberturvalisuse testimise allikat. OWASP Application Security Verification Standard pakub nummerdatud nõudeid, mille vastu verifitseerida. Kui viitate sellele pileti või aruande koosseisus, lisage versioon, näiteks v5.0.0-1.2.5, sest identifikaatorid võivad standardi versioonide vahel muutuda.

Kust alustada

  1. Koostage loetelu kõigist lõpp-punktidest, mis võtavad vastu faile, sealhulgas administreerimisvahenditest, impordifunktsioonidest ja vanadest pluginatest.
  2. Määrake igaühe jaoks lubatud laiendid, maksimaalne failisuurus ja maksimaalne failinime pikkus ning rakendage sisendi valideerimist enne laiendi kontrolli.
  3. Asendage kasutaja antud failinimed genereeritutega. Viige salvestus eraldi serverisse või väljapoole webroot'i ning serveerige avalikke faile töötleja kaudu, mis seostab ID-d failinimedega.
  4. Lisage faili tüübi ja signatuuri valideerimine, viirusetõrje või sandboxi samm ning CDR teie vastu võetavate dokumenditüüpide jaoks. Kontrollige, et parsimisteegid on ajakohased ja turvaliselt konfigureeritud.
  5. Muutke testitabel skriptitud kontrollideks ja käivitage need enne iga väljalaset. Kui soovite tulemusele välist hinnangut, saab meie läbitungimistestimise teenus lõpp-punkte testida ning meie turvalise tarkvaraarenduse tugi aitab, kui funktsioon on alles kavandamise etapis. OWASP-i failide üleslaadimise juhend sobib mõlemal juhul ülevaatuse kontrollnimekirjaks.

Kuidas saame aidata

Läbistustestimine

Ründame teie võrke, rakendusi ja inimesi nagu päris vastane ning näitame, kuidas iga turvaauk sulgeda.

Kirjutage meile
AngelForce’i meeskond

Kirjutanud AngelForce’i meeskond: CEH-, LPT Masteri ja CISA-sertifikaadiga turvakonsultandid, kes testivad, jälgivad ja kaitsevad organisatsioonide süsteeme kogu Euroopas ja Türgis.

Artikkel on kirjutatud tehisintellekti abil allpool loetletud avalike allikate põhjal ning AngelForce’i meeskond vaatas selle enne avaldamist üle.

Allikad

  1. cheatsheetseries.owasp.org/cheatsheets/File_Upload_Cheat_Sheet.html
  2. owasp.org/projects/asvs
  3. owasp.org/projects/web-security-testing-guide

Artiklid teemal „Veebiturvalisus“

Rääkige meile, mida soovite kaitsta

Kirjeldage oma keskkonda ja seda, mida soovite saavutada. Vastame e-posti teel.

Kirjutage meile
info@angelforce.eu

AngelForce OÜ · Tallinn, Eesti