Fájl feltöltő

Miért jelent kockázatot a fájlok feltöltése

A fájlok felhasználóktól való átvétele kényelmes, de ha nem megfelelően van tervezve, súlyos sebezhetőségeket okozhat. A támadók a feltöltési lehetőségeket kihasználva próbálnak tetszőleges kódot végrehajtani, a szerver tárolókapacitását kimeríteni vagy illegális fájlokat terjeszteni.

A legjellemzőbb fenyegetések a következők:

  • Webshell feltöltése/végrehajtása — Rosszindulatú szkriptek feltöltése távoli vezérlés céljából.
  • Malware-ral fertőzött fájlok — További felhasználók megfertőzése másodlagos károkat okozva.
  • Path traversal — Rosszindulatú útvonal megadásával váratlan helyre mentés.
  • DoS (ZIP bomba, nagy fájlok) — Tárolási vagy feldolgozási kapacitás kimerítése.
  • Kiterjesztés/MIME álcázás — Kettős kiterjesztés, például .jpg.php, vagy a Content-Type álca bypasses.
  • XSS előnézeten keresztül — SVG/HTML előnézként szkriptek végrehajtása.

Az alapvető intézkedés a "többrétegű védelem (defense in depth)". Ahelyett, hogy egyetlen intézkedésre támaszkodna, a több védelmi réteg együttes alkalmazásának terve hatékony.

Válaszlépések: A tervezési fázis elveinek betartása

Kiterjesztés és MIME szigorú ellenőrzése (Whitelist megközelítés)

A megengedett kiterjesztések korlátozása, és a fájlok fogadhatóságának döntése ne csak a kiterjesztésen alapuljon. Ellenőrizze a fájlok aláírását (magic number) és validálja a tartalmat. A Content-Type fejléceket ne bízzon meg, és valósítson meg eljárásokat a kettős kiterjesztések és NULL bájtok elkerülésére.

A fájlnevek biztonságos kezelése/újraértelmezése

Ne tárolja a felhasználó által megadott fájlneveket. Cserélje le őket egyedi nevekre UUID vagy hash + időbélyeg segítségével, és tárolja külön a metaadatokban az eredeti fájlnevet. A speciális karaktereket és a hosszkorlátozást is kezelje.

Tárolási hely és engedélykezelés

A feltöltött fájlokat webroot-on kívül kell tárolni, és fontos, hogy ne legyenek közvetlen végrehajtási lehetőségeik. Ha lehetséges, tároljon egyedi objektumtárolóban (pl. S3), és generáljon letöltési linkeket az alkalmazás segítségével. A tárolóhelyeknek ne adjon végrehajtási jogokat, és korlátozza a minimális írási-olvasási jogokat.

Méretkorlátozás és egyidejű feltöltések irányítása

Állítson be maximális fájlméretet, és vezessen be egyidejű feltöltési számok és sebességkorlátozások érdekében, hogy biztosítsa a szolgáltatás elérhetőségét. Ha tömörített fájlokat (pl. ZIP) fogad el, akkor a kicsomagolt fájlokat is ellenőrizni kell.

Malware-szkennelés és tartalom semlegesítése (CDR)

A feltöltés után azonnal hajtson végre víruskeresést (ha lehetséges, több motorral), a PDF / Office fájlok esetén pedig CDR (Content Disarm & Reconstruct) segítségével semlegesítse őket. A képeket újra kódolással (betöltés → új fájl generálása) kell feldolgozni, hogy eltávolítsa a benne lakozó rosszindulatú adatokat.

HTTPS / Kommunikációs védelem és CSRF védekezés

A kommunikációt kötelezően TLS (HTTPS) védelemmel kell ellátni, és CSRF tokenekkel kapcsolatos intézkedéseket kell megvalósítani. A letöltési válaszokhoz adjon hozzá Content-Disposition: attachment és X-Content-Type-Options: nosniff fejléceket, hogy megakadályozza a böngésző hibás működését.

Naplózás, auditálás és figyelmeztetési mechanizmus

Tartsa nyilván, hogy ki, mikor, mely fájlokkal foglalkozott, részletes naplózás mellett, és állítson be riasztásokat az anomális viselkedésre (magas feltöltési gyakoriság vagy nagy mennyiségű elutasítás). A fájlok összhangjának megőrzéséhez a hash értékekkel való kezelés is hatékony.

Sérülékenységi tesztelés és penetrációs tesztelés

A megvalósítás után hajtson végre a fájlfeltöltésre specializált sérülékenység-ellenőrzéseket (shell beillesztés, kiterjesztés elkerülés, path traversal stb.), és végezzen rendszeres ellenőrzéseket.

Az UploadF példáján történő áttekintés

A bemutatott UploadF (uploadf.com) kifejezetten PC és mobil platformokra optimalizált, drag-and-drop funkcióval és 100 fájl egyidejű feltöltésének lehetőségével rendelkezik, így kényelmes, ugyanakkor a szolgáltatás tervezése során az alábbi figyelmeztetéseket és fejlesztéseket is figyelembe kell venni.

Megvalósítási ellenőrzőlista (biztonsági tervezési szempontok)

Ellenőrzési tételek Megvalósítás / Ellenőrzési szempontok
Kiterjesztés whitelist korlátozások Csak a szükséges formátumok engedélyezettek. A fekete lista kiegészítő jellegűen használható.
MIME / aláírás ellenőrzés Ellenőrizze, hogy a kiterjesztés és a tartalom megfelel-e (magic number ellenőrzés).
Fájlnevek átnevezése Cserélje le UUID vagy hash névre, és kezelje az eredeti nevet metaadatként.
Speciális karakterek eltávolítása A `/`, `\`, `..`, NULL stb. eltávolítása vagy elutasítása.
Tárolási könyvtár Tárolja a webroot-on kívül vagy objektumtárolóban.
Könyvtári jogok Végrehajtás nem engedélyezett, minimális olvasási-írási jogok (principle of least privilege).
Maximális/minimális fájlméret Az alsó-határ beállítása és a ZIP stb. kicsomagolása utáni ellenőrzés.
Egyidejű feltöltés irányítása Párhuzamos szám limit, sebességirányítás, időkorlát beállítása.
Víruskeresés / CDR A feltöltés azonnali ellenőrzése és szükség szerinti semlegesítési eljárás.
Kommunikáció titkosítása (HTTPS) Megkövetelni TLS-t (az emberközti támadások megelőzése érdekében).
CSRF védekezés Token alapú ellenőrzések bevezetése.
Válaszfejlécek beállítása Content-Disposition: attachment, X-Content-Type-Options: nosniff stb. hozzáadása.
Jelentés és figyelmeztetések A feltöltési tevékenységeket auditálni kell, értesítéseket kell küldeni anomáliák esetén.
Rendszeres biztonsági áttekintés Rendszeresen végezzen sérülékenységi tesztelést és penetrációs tesztelést.
Régi fájlok automatikus törlése A megőrzési időszak lejárta után a teljes törlés megtervezése.
HOzzáférés-vezérlés/piacok A felhasználónkénti/csoportos elérhetőségek szigorú kezelése.

Összefoglalás és felhasználói nézőpont

A fájlok feltöltési funkciója mind a kényelmet, mind a kockázatokat magában foglalja. Az itt bemutatott többrétegű védelem (whitelist, aláírás-felülvizsgálat, tárolási helységek szétválasztása, malware elleni intézkedések, napló-ellenőrzések stb.) alkalmazásával a támadási kockázat jelentősen csökkenthető.

A felhasználók számára fontos, hogy "könnyen használható és biztonságos" élményt kapjanak. Például az UploadF (uploadf.com)-hoz hasonló, az egyedi törlés és tárolási idő beállításokkal rendelkező szolgáltatások nagyobb bizalmat adhatnak a felhasználóknak.

Források és közlemények (részben)

  1. OWASP — Fájl Feltöltési Csalási Lista
  2. OPSWAT — Fájl feltöltési védelem / legjobb gyakorlatok
  3. PortSwigger — Fájl feltöltési sérülékenységek
  4. SANS Intézet — Biztonságos fájl feltöltési útmutató
  5. UploadF (uploadf.com) — Fájlfeltöltő (bemutató weboldal)

※ A fenti források az íráskori referencia példákat tartalmaznak. Kérjük, ellenőrizze a hivatalos dokumentációkat a részletes megvalósítási anyagokhoz és a legfrissebb fenyegetési információkhoz.


Kezdőlap   Súgó   Kapcsolat   🌐Language  
©Fájl feltöltő