Securitatea încărcării fișierelor contribuie la prevenirea transformării unui site web într-o sursă de abuz de găzduire atunci când atacatorii utilizează funcția de încărcare pentru a stoca sau a distribui programe malware, pagini de phishing, fișiere de spam sau conținut care consumă resurse excesive. Riscul este maxim atunci când o funcție de încărcare acceptă fișiere executabile, stochează fișiere în căi publice previzibile, utilizează permisiuni slabe sau nu are limite privind volumul de încărcare.
Securitatea încărcărilor trebuie să acopere întregul proces: validarea fișierului, alegerea locului de stocare, controlul accesului, prevenirea executării, scanarea conținutului și monitorizarea activității.
Cuprins
Cum sunt exploatate încărcările nesigure
Un formular de încărcare reprezintă un punct de acces în mediul de găzduire. Dacă aplicația acceptă un fișier periculos și îl plasează într-un director accesibil prin web, un atacator ar putea folosi fișierul respectiv ca conținut găzduit. Rezultatul poate include distribuirea de malware, pagini de autentificare false, conținut de tip spam sau fișiere care consumă spațiu de stocare și resurse ale serverului.
Riscul nu se limitează la formularele publice. WordPress acceptă, de asemenea, încărcări de fișiere media, teme și pluginuri. Eșecurile la încărcare pot fi legate de restricții privind formatul fișierelor sau de configurația serverului, ceea ce arată de ce gestionarea încărcărilor depinde atât de aplicație, cât și de mediul de găzduire. Consultați Cum se remediază erorile de încărcare a fișierelor și imaginilor în WordPress.
Tipuri de fișiere care nu ar trebui acceptate
Tipurile de fișiere fără restricții reprezintă una dintre cele mai grave greșeli. O regulă precum “acceptă orice fișier” le oferă atacatorilor posibilitatea de a încărca cod executabil, scripturi sau alt conținut care nu a fost niciodată solicitat de site.
Utilizați o listă de permisiuni bazată pe scopul real al funcționalității. Încărcarea unei imagini de profil poate necesita doar formate de imagine acceptate. Încărcarea unui document poate necesita un set restrâns de formate de document. Respingeți fișierele care nu sunt necesare, inclusiv fișierele executabile și fișierele de script.
- Permiteți numai tipurile de fișiere de care funcția are efectiv nevoie.
- Validați extensia fișierului și tipul de conținut detectat.
- Nu vă bazați pe numele fișierului furnizat de browser.
- Respingeți extensiile duble și numele concepute pentru a ascunde conținut executabil.
- Aplicați aceeași validare fișierelor încărcate prin intermediul unui panou de administrare, API sau flux de lucru FTP.
Accesul FTP necesită, de asemenea, protecție, deoarece clienții FTP gestionează direct fișierele site-ului web. Accesul neautorizat la FTP poate duce la compromiterea contului și la infectări cu malware, astfel încât datele de autentificare și accesul la FTP trebuie tratate ca parte a limitelor de securitate pentru încărcare. Consultați ghidul de securitate pentru clienții FTP.
De ce căile de stocare publice și previzibile sunt riscante
Fișierele stocate într-un director web public pot fi accesibile printr-o adresă URL directă. Numele și folderele previzibile facilitează descoperirea conținutului încărcat. Dacă aplicația creează căi de acces pe baza numelui original al fișierului, atacatorii pot influența, de asemenea, locul în care este stocat conținutul.
Stocați fișierele încărcate în afara directorului accesibil public atunci când funcționalitatea nu necesită acces direct. Atunci când este necesar accesul public, utilizați nume de fișiere generate și mențineți calea de stocare separată de codul aplicației. Salvați numele original al fișierului doar ca date de afișare, nu ca cale pe partea de server.
Permisiuni și prevenirea executării
Fișierele încărcate nu ar trebui să aibă mai multe drepturi de acces decât cele necesare funcției de încărcare. Contul care rulează site-ul web ar trebui să poată scrie în locația de încărcare, în timp ce conținutul încărcat nu ar trebui să obțină permisiunea de a modifica codul aplicației sau configurația.
Prevenirea executării este o măsură de control separată de validarea fișierelor. Chiar și un fișier care trece de verificarea extensiei nu ar trebui să fie executabil dintr-un director de încărcare. Configurați locația de stocare astfel încât conținutul încărcat să fie servit ca date, mai degrabă decât interpretat ca cod al aplicației. Păstrați directoarele de încărcare separate de directoarele care conțin codul executabil al site-ului web.
Pluginurile neutilizate pot adăuga o altă cale în același sistem de fișiere. Acestea rămân în fișierele site-ului web și pot deveni un risc de securitate atunci când sunt depășite, vulnerabile sau abandonate. Eliminați pluginurile WordPress neutilizate, în loc să lăsați disponibile funcțiile lor de încărcare sau de administrare. Consultați De ce pluginurile WordPress neutilizate reprezintă un risc de securitate.
Încărcări supradimensionate și limite de rată lipsă
Încărcările de fișiere pot consuma spațiu de stocare, lățime de bandă, memorie și timp de procesare. Un atacator nu are nevoie să încarce cod executabil pentru a crea o problemă. Încărcările repetate de fișiere mari pot umple spațiul de stocare disponibil sau pot genera o încărcare susținută asupra site-ului web.
Stabiliți o dimensiune maximă a fișierului care să corespundă scopului funcționalității. De asemenea, limitați numărul de încărcări pe care un utilizator sau o sesiune le poate efectua într-o perioadă definită. Aplicați aceste limite înainte ca serverul să efectueze operațiuni de procesare costisitoare, cum ar fi conversia imaginilor sau inspectarea arhivelor.
- Stabiliți o limită de dimensiune pentru fiecare fișier.
- Stabiliți o cotă totală în cazul în care utilizatorii pot încărca mai multe fișiere.
- Limitați solicitările repetate provenite de la același cont, aceeași sesiune sau același client.
- Respingeți solicitările care depășesc limita, în loc să le procesați parțial.
- Generați alerte în cazul încărcărilor respinse în mod repetat și al creșterilor bruște ale volumului de încărcări.
Măsuri de protecție prin scanare și monitorizare
Validarea verifică dacă un fișier respectă regulile funcției. Scanarea verifică fișierul pentru a detecta conținut dăunător. Utilizați ambele controale atunci când se acceptă conținut încărcat de la utilizatori neîncredibili. Mențineți fișierul în carantină până la finalizarea scanării și validării și nu puneți la dispoziție fișierele respinse printr-o adresă URL publică.
Monitorizați evenimentele de încărcare, inclusiv contul, ora, numele fișierului, dimensiunea, rezultatul și locația de stocare. Analizați tiparele neobișnuite, cum ar fi numeroase încărcări într-un interval scurt de timp, încercări repetate cu tipuri de fișiere blocate, fișiere noi în directoare neașteptate sau o creștere bruscă a traficului de ieșire.
Lista de verificare pentru securitatea încărcărilor
- Definiți tipurile exacte de fișiere de care are nevoie funcția.
- Permiteți numai acele tipuri și respingeți conținutul executabil.
- Validați atât numele fișierului, cât și conținutul detectat al fișierului.
- Generați nume de stocare în loc să utilizați căile furnizate de utilizator.
- Stocați fișierele în afara directorului public atunci când nu este necesar accesul direct.
- Împiedicați executarea în fiecare director de încărcare.
- Aplicați permisiunile minime necesare.
- Setați limite pentru dimensiunea fișierului, spațiul total de stocare și rata cererilor.
- Scanați fișierele înainte de a le pune la dispoziție.
- Înregistrați activitatea de încărcare și investigați tiparele neobișnuite.
O funcție de încărcare securizată tratează fiecare fișier încărcat ca date neîncredere. Validarea riguroasă, stocarea izolată, permisiunile care nu permit executarea, scanarea și monitorizarea acționează împreună pentru a împiedica utilizarea contului de găzduire în scopul distribuirii de conținut dăunător sau care consumă excesiv resurse.