Nahrávač súborov

Prečo nahrávanie súborov predstavuje riziko

Systém prijímania súborov od používateľov je pohodlný, ale ak nie je správne navrhnutý, môže viesť k vážnym zraniteľnostiam. Útočníci môžu zneužiť nahrávanie na vykonanie vlastného kódu, vyčerpanie kapacity servera, šírenie nebezpečných súborov a pod.

Medzi typické hrozby patrí:

  • Nahrávanie/spustenie webshellu — Nahratie škodlivého skriptu na vzdialené ovládanie.
  • Súbory s malwarom — Druhotné škody, ktoré šíria nákazu na iných používateľov.
  • Porušenie adresárov — Uloženie na nečakané miesto pomocou neplatných adries.
  • DoS (ZIP bomba, veľké súbory) — Vyčerpanie úložiska alebo výkonu.
  • Falošné prípony/MIME — Obídenie kontroly dvojitou príponou ako .jpg.php alebo falošným typom obsahu.
  • XSS cez náhľady — Skripty sa spúšťajú počas náhľadu SVG/HTML.

Základným opatrením je "viacúrovňová obrana (defense in depth)". Je efektívne navrhovať systém s viacerými obrannými vrstvami, nie s jediným opatrením.

Riešenia: zásady, ktoré treba dodržať vo fáze návrhu

Prísna kontrola prípony a MIME (systém bielej listiny)

Obmedzte povolené prípony a rozhodujte o prijatí/odmietnutí nielen na základe prípony. Skontrolujte podpis súboru (magické číslo) a overte jeho obsah. Nepoužívajte hlavičku Content-Type ako dôveryhodnú a implementujte opatrenia na zabránenie dvom príponám a nulovým bajtom.

Bezpečnosť názvu súboru a premenovanie

Nehodlajte ponechať meno súboru, ktoré poskytol používateľ, tak ako je. Nahradte ho jedinečným názvom pomocou UUID alebo hash + časová pečiatka a pôvodný názov súboru uložte ako metadáta. Spracujte tiež špeciálne znaky a obmedzenia dĺžky.

Umiestnenie ukladania a kontrola práv

Nahraté súbory by mali byť ukladané mimo webroot, aby sa predišlo ich priamej executabilite. Ak je to možné, uložte ich do špecializovaného objektového úložiska (napr. S3) a poskytujte odkazy na stiahnutie prostredníctvom aplikácie. Obmedzte povolenia priečinka na minimálne potrebné práva na čítanie a zápis, bez práva spúšťania.

Obmedzovanie veľkosti a kontrola súčasných nahrávaní

Nastavte maximálnu veľkosť súboru a zaviednite kontrolu počtu súčasných nahrávaní a rýchlosti, aby ste zabezpečili dostupnosť služby. Ak prijímate komprimované súbory (ZIP atď.), je potrebné skontrolovať aj jednotlivé súbory po ich rozbalení.

Skener malwaru a neutralizácia obsahu (CDR)

Okamžite po nahratí vykonajte antivírusové skenovanie (ak je to možné, viac motorov) a neutralizujte PDF/Office súbory pomocou CDR (Content Disarm & Reconstruct). Pre obrázky je efektívne previesť ich znovu (načítanie → vytvorenie nového súboru) a tým odstrániť skryté nebezpečné dáta.

HTTPS / Ochrana komunikácie & Opatrenia proti CSRF

Všetka komunikácia musí byť chránená pomocou TLS (HTTPS) a implementujte ochranné opatrenia ako CSRF tokeny. Do odpovede na stiahnutie pridajte Content-Disposition: attachment a X-Content-Type-Options: nosniff, aby ste predišli nesprávnemu správaniu prehliadača.

Mechanizmus logovania, auditu a upozornení

Podrobne uchovávajte záznamy o tom, kto kedy spravoval aké súbory, a nastavte upozornenia na neobvyklé správanie (vysoká frekvencia nahrávania alebo množstvo odmietnutí). Uchovávanie hashov pre integritu súborov je tiež účinné.

Testovanie zraniteľnosti a penetračné testy

Po implementácii vykonajte testy zraniteľnosti špecifické pre nahrávanie súborov (vkladanie shellu, obídenie prípon, porušenie adresárov atď.) a pravidelne ich prehodnocujte.

Úvahy na príklade UploadF

Tam, kde sa spomína UploadF (uploadf.com), je veľmi pohodlný a podporuje PC aj mobilné zariadenia, drag-and-drop, nahrávanie 100 súborov súčasne. Avšak v návrhu služby je potrebné venovať pozornosť nasledujúcim aspektom a inováciám.

Kontrolný zoznam implementácie (z hľadiska bezpečnostného návrhu)

Kontrolná položka Dôležité body na realizáciu/overenie
Obmedzenie bielej listiny prípon Povolenie iba potrebných formátov. Čierna listina sa používa ako doplnková.
Kontrola MIME/podpisu Overenie zhody medzi príponou a obsahom (skontrolujte magické číslo).
Preímenovanie súboru Premeniť na UUID alebo názov hashu a pôvodný názov spravovať ako metadáta.
Odstránenie špeciálnych znakov Odstránenie alebo odmietnutie `/`, `\`, `..`, NULL atď.
Umiestnenie priečinka Uloženie mimo webroot alebo do objektového úložiska.
Práva priečinka Zákaz spúšťania, minimálne práva na čítanie a zápis (principle of least privilege).
Maximálna/minimálna veľkosť súborov Jasne definujte maximálnu veľkosť a skontrolujte súbory po rozbalení ZIP atď.
Kontrola súčasných nahrávaní Obmedzenie počtu súčasných nahrávaní, kontrola rýchlosti, nastavenie časového limitu.
Antivírusové skenovanie/CDR Okamžité skenovanie po nahratí a potrebné neutralizačné opatrenia.
Šifrovanie komunikácie (HTTPS) Povinnosť používania TLS (na ochranu pred útokmi MITM).
Opatrenia proti CSRF Zavádzanie kontroly na báze tokenov.
Nastavenie hlavičky odpovede Pridanie Content-Disposition: attachment, X-Content-Type-Options: nosniff a pod.
Logovanie a upozornenia Audítujte činnosti nahrávania a informujte pri anomáliách.
Pravidelné bezpečnostné hodnotenie Pravidelné testovanie zraniteľností a penetračné testy.
Automatické odstránenie starých súborov Návrh na úplné vymazanie po uplynutí doby uchovávania.
Kontrola prístupu/oprávnenie Prísna správa prístupových práv na úrovni používateľa/skupiny.

Zhrnutie a pohľad na užívateľov

Funkcia nahrávania súborov má ako výhody, tak aj riziká. Započítaním viacerých obranných vrstiev (biela listina, kontrola podpisu, separácia úložiska, opatrenia proti malwaru, logovanie a audit) do návrhu môže výrazne znížiť riziko útokov.

Pre používateľov je dôležité vyjadrenie, ktoré sa sústreďuje na "pohodlnosť a bezpečnosť". Pre službu ako UploadF (uploadf.com), ktorá ponúka funkcie ako individuálne mazanie alebo nastavenie doby uchovávania, môžu vytvoriť pocit dôvery.

Zdroje a referencie (časť)

  1. OWASP — Príručka pre nahrávanie súborov
  2. OPSWAT — Ochrana nahrávania súborov / osvedčené postupy
  3. PortSwigger — Zraniteľnosti nahrávania súborov
  4. SANS Institute — Návod na zabezpečené nahrávanie súborov
  5. UploadF (uploadf.com) — Nahrávač súborov (prezentácia)

※ Toto sú len príklady odkazov v čase písania článku. Pre podrobnejšie implementačné dokumenty a aktuálne informácie o hrozbách si pozrite príslušné oficiálne dokumenty.


Hlavná stránka   Pomoc   Kontakt   🌐Language  
©Nahrávač súborov