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í:
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.
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.
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.
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.
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í.
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.
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.
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é.
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.
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á 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. |
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.
※ 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.