A Host header injection nem új sérülékenység: rendszeresen visszatérő probléma, negy gyakran jár kritikus hatással. Nem véletlenül, hiszen egyetlen rosszul kezelt fejléc elegendő lehet fiókátvételhez, vagy cache poisoninghez.
Mi az a Host header injection?
A Host fejléc-befecskendezés egy régóta ismert, mégis rendszeresen felbukkanó webalkalmazás-sérülékenység. Akkor jelentkezik, amikor egy alkalmazás a HTTP-kérés Host-fejlécének értékét megfelelő validáció nélkül használja fel, például abszolút URL-ek, átirányítások vagy egyéb erőforrás-hivatkozások előállítására.
A probléma gyökere, hogy az alkalmazás megbízik a Host-fejlécben, holott az a kliens által küldött – tehát támadó által manipulálható – adat. Amennyiben ez az érték biztonsági döntések, vagy kimeneti adatok alapjául szolgál, az különféle támadásokhoz – például jelszó visszaállító link manipulációhoz, cache poisoning-hez vagy open redirect-hez – vezethet.
Miért veszélyes a Host fejléc-manipuláció?
Önmagában az, hogy a Host-fejléc módosítható, még nem jelent problémát. A sérülékenység akkor jelenik meg, amikor az alkalmazás ezt az értéket implicit módon megbízhatónak tekinti.
Egy tipikus példa erre a jelszó-visszaállítás folyamata, hiszen a jelszó-visszaállítás során sok alkalmazás dinamikusan generál egy linket, amelyet e-mailben küld el a felhasználónak. Ha azonban az alkalmazás a teljes URL-t a beérkező kérés Host-fejlécéből állítja össze (pl. https://{Host}/reset?token=…), akkor egy támadó könnyen módosíthatja ezt az értéket (Host: attacker.com).
Ebben az esetben a felhasználó egy látszólag legitim e-mailt kap, amely valójában a támadó domainjére mutat. Ha a felhasználó rákattint a linkre, a token kiszivároghat, így a támadó átveheti az irányítást a fiók felett.
További gyakori támadási forma a(z)
Web cache poisoning (Host header alapján):
Amennyiben egy reverse proxy vagy CDN a Host fejlécet is figyelembe veszi a cache kulcs képzése során, a támadó manipulált Host értékkel képes rosszindulatú választ juttatni a gyorsítótárba.
Ez a tartalom később más felhasználók számára is kiszolgálásra kerül a shared cache miatt. Az ilyen támadás következménye lehet session hijack, XSS payload-ok terjesztése vagy a megjelenített tartalom célzott manipulációja.
Open redirect sérülékenység:
Amikor az alkalmazás a Host-fejléc alapján generál abszolút átirányítási URL-eket, egy támadó képes ezt az értéket manipulálni, és a felhasználót saját, rosszindulatú domain-jére irányítani.
Mindez gyakran teljesen legitimnek tűnő linkeken keresztül történik, így a felhasználó nem észleli a kockázatot. Az ilyen mechanizmusok különösen gyakoriak phishing kampányokban és token-szivárgási támadási láncokban, ahol a cél a hitelesítési adatok megszerzése.
SSRF-szerű viselkedés hibás routing miatt:
Ha a backend rendszerek a Host-fejléc értékét használják belső útvonalkezeléshez, egy manipulált Host lehetővé teheti a támadó számára, hogy nem várt vagy védett belső szolgáltatásokat érjen el.
Ez különösen problémás olyan környezetekben, ahol a routing logika implicit módon bízik a beérkező kérés adataiban. Microservice és proxy alapú architektúrák esetén a kockázat tovább nő, mivel a forgalom több komponensen keresztül halad, és a hibás bizalmi lánc könnyen kihasználhatóvá válik.
Fontos megjegyezni, hogy a modern infrastruktúrák (load balancer-ek, reverse proxy-k, konténerizált környezetek) gyakran továbbítják vagy módosítják a Host-fejlécet, ami még összetettebbé teszi a helyzetet. Ilyenkor a X-Forwarded-Host vagy hasonló fejlécek is szerepet kaphatnak a sérülékenység kialakulásában.
Hogyan védekezhetünk Host header injection ellen?
A Host header injection elleni védekezés alapja az, hogy a Host fejlécet soha ne tekintsük megbízható adatnak.
Whitelist-alapú Host validáció
Az alkalmazásnak egyértelműen meg kell határoznia, hogy mely domainek érvényesek, és minden beérkező Host-fejlécet ehhez a listához kell hasonlítani. Ha az érték nem szerepel a whitelist-ben, a kérést el kell utasítani.
Fix domain használata URL-generáláskor
Abszolút URL-ek generálásakor célszerű konfigurációból (pl. environment variable) származó, fix domainnevet használni, nem pedig a beérkező kérés adatait.
Reverse proxy és load balancer helyes konfigurálása
A front-end proxy (pl. Nginx, Apache, cloud load balancer) szintjén érdemes szűrni a nem várt Host értékeket. Sok esetben már itt meg lehet állítani a támadást.
Forwardolt fejlécek biztonságos kezelése
Ha az alkalmazás X-Forwarded-Host vagy hasonló fejléceket használ, akkor különösen fontos ezek validációja, illetve annak biztosítása, hogy csak megbízható forrásból (pl. saját proxy) érkezzenek.
Biztonságos jelszó-visszaállítási folyamatok
A reset linkek generálásakor mindig fix, konfigurált domaint használjunk, és lehetőség szerint rövid élettartamú, egyszer használatos tokeneket alkalmazzunk.
Célzott pentest és automatizált biztonsági tesztelés
Penetrációs tesztek és automatizált biztonsági szkennerek segítségével könnyen azonosíthatók az ilyen típusú hibák. Érdemes célzottan tesztelni különböző Host és forwardolt header variációkkal.
Miért fontos a Host header injection vizsgálata pentest során?
A Host header injection tipikusan olyan sérülékenység, amely könnyen kimarad a felszíni ellenőrzésekből. Azonban mivel láncolható más hibákkal, aránytalanul nagy kockázatot hordoz. Pentest során nem elegendő tehát önmagában a Host-fejléc manipulálhatóságát vizsgálni; azt kell megérteni, hogy az adott alkalmazás és infrastruktúra hogyan használja ezt az értéket.
Egy tapasztalt pentester célzottan teszteli, hogy a Host-fejléc hatással van-e URL-generálásra, redirect logikára, cache működésre vagy backend routingra. Emellett figyelembe veszi a teljes request útját: load balancer, reverse proxy, alkalmazási réteg és esetleges microservice komponensek együttműködését.
A gyakorlatban a valódi kockázat gyakran nem egyetlen komponensben jelenik meg, hanem azok kölcsönhatásából adódik. Ezért a Host header injection vizsgálata során különösen fontos a kontextus és a támadási láncok feltérképezése. Egy jól kivitelezett pentest nemcsak a hibát azonosítja, hanem megmutatja azt is, hogy a hiba az adott környezetben milyen üzleti hatásokkal járhat.
A Host-fejléc nem megbízható adat
A Host header injection tipikusan olyan sérülékenység, amely nem bonyolult technikai hibából, hanem hibás feltételezésből ered: abból, hogy a szerver megbízik egy kliens által küldött adatban.
Bár a kihasználása sokszor kontextusfüggő, a következményei súlyosak lehetnek: a fiókátvételtől kezdve a cache poisoningon át egészen a felhasználók megtévesztéséig bármi megtörténhet.
A jó hír, hogy megfelelő validációval, tudatos tervezéssel és helyes infrastruktúra-konfigurációval ez a kockázat hatékonyan kezelhető. A kulcs az, hogy minden külső bemenetet (még az olyan „alapvetőnek” tűnő elemeket is, mint a Host-fejléc) potenciálisan ellenségesnek tekintsünk.
Szeretnéd tudni, mennyire védett a rendszered? Egy jól célzott pentest gyorsan megmutatja, hol vannak a valódi kockázatok. Ha szeretnél használhatatlan riportok helyett tiszta képet kapni szervezeted támadhatóságáról, lépj velünk kapcsolatba!

