Príklad
Používateľ môže do systému nahrávať rôzne súbory:
- profilové obrázky,
- PDF dokumenty,
- prílohy k formulárom,
- exporty z iných systémov,
- prílohy do ticketov alebo komentárov.
Na prvý pohľad ide o jednoduchú funkcionalitu:
„Vyber súbor → Nahrať.“
V praxi je upload jedným z najrizikovejších miest aplikácie.
Stačí:
- nesprávne povolený typ súboru,
- slabá validácia MIME typu,
- príliš veľký súbor,
- škodlivý skript schovaný v obrázku,
- alebo vírus v dokumente,
a aplikácia môže:
- spadnúť,
- zahltiť disk,
- sprístupniť škodlivý obsah ďalším používateľom,
- alebo umožniť útok na server.
Tester preto netestuje len:
- „či sa súbor nahral“,
ale hlavne:
- čo všetko sa dá nahrať,
- čo systém odmietne,
- ako sa kontroluje bezpečnosť,
- a čo sa stane po nahraní.
Ako otestovať bezpečnosť nahrávaných súborov
1. Povolené a zakázané typy súborov
- Over, ktoré typy súborov systém povoľuje (
pdf,jpg,png,docx,xlsx…). - Skús nahrať zakázané typy:
exebatcmdjsphpsh
- Over, či systém súbor korektne odmietne.
- Skontroluj:
- chybové hlášky,
- HTTP status,
- logovanie incidentu.
2. Kontrola MIME typu vs. prípony
- Premenuj súbor:
virus.exe→virus.jpgscript.php→image.png
- Over:
- či systém kontroluje len príponu,
- alebo aj skutočný MIME typ.
- Skús nahrať:
- poškodené obrázky,
- nevalidné PDF,
- prázdne súbory.
3. Limity veľkosti súboru
- Over maximálnu povolenú veľkosť uploadu.
- Testuj:
- tesne pod limitom,
- presne na limite,
- tesne nad limitom.
- Skús:
- upload 0 B súboru,
- upload extrémne veľkého súboru.
- Sleduj:
- timeouty,
- spotrebu pamäte,
- pád aplikácie,
- chovanie reverse proxy alebo load balancera.
4. Vírusová kontrola a malware scanning
- Over, či sa súbory skenujú antivírusom.
- Ak existuje testovacie prostredie:
- použi EICAR testovací antivírusový súbor.
- Over:
- či sa súbor zablokuje,
- či sa uloží do karantény,
- či používateľ dostane správnu informáciu.
- Skontroluj:
- auditné logy,
- notifikácie administrátorovi,
- retry mechanizmy pri výpadku antivírusu.
5. Upload škodlivého obsahu
- Skús upload:
- HTML súboru so scriptom,
- SVG s vloženým JavaScriptom,
- Office dokumentu s makrami.
- Over:
- či sa obsah sanitizuje,
- či sa súbory nespracujú ako aktívny obsah.
- Testuj:
- XSS cez uploadnutý súbor,
- download a následné otvorenie v prehliadači.
6. Ukladanie a prístup k súborom
- Over:
- kam sa súbory ukladajú,
- či majú náhodné názvy,
- či sa nedá uhádnuť URL.
- Skús:
- prístup bez prihlásenia,
- prístup cez priamy link,
- zmenu ID súboru v URL.
- Over:
- autorizáciu,
- expiráciu linkov,
- podpisované URL,
- ochranu proti directory listing.
7. Duplicitné názvy a špeciálne znaky
- Nahraj:
- dva súbory s rovnakým názvom,
- názvy s diakritikou,
- extrémne dlhé názvy,
- špeciálne znaky:
../%00<script>
- Over:
- správne escapovanie,
- ochranu proti path traversal,
- stabilitu databázy a filesystemu.
8. Paralelné a hromadné uploady
- Spusti viac uploadov naraz.
- Testuj:
- race conditions,
- zamknutie súborov,
- prepisovanie dát,
- výkon pri viacerých používateľoch.
- Over:
- limity počtu uploadov,
- throttling,
- rate limiting.
9. Mazanie a životný cyklus súborov
- Over:
- čo sa stane po zmazaní entity,
- či sa zmaže aj fyzický súbor,
- či nezostávajú orphan súbory.
- Testuj:
- rollback,
- archiváciu,
- retention pravidlá,
- GDPR výmaz.
10. Monitoring a audit
- Skontroluj:
- kto uploadoval súbor,
- kedy,
- z akej IP,
- aký typ súboru,
- výsledok antivírusovej kontroly.
- Over:
- auditné logy,
- SIEM integrácie,
- alerty pri podozrivých uploadoch.
Bezpečnosť uploadu nie je len frontendová validácia typu:
„Povolené sú iba JPG a PDF.“
Skutočné problémy často vzniknú:
- na backend serveri,
- pri spracovaní súboru,
- pri generovaní preview,
- pri antivírusovej kontrole,
- alebo pri nesprávne nastavených prístupoch.
Upload súborov je vstupný bod do systému.
A každý vstupný bod je potenciálny bezpečnostný incident.
