Čitatelia ako vy pomáhajú podporovať MUO. Keď uskutočníte nákup pomocou odkazov na našej stránke, môžeme získať pridruženú províziu. Čítaj viac.

Jednou z výhod byť bezpečnostným špecialistom je práca s mnohými tímami. Po audite budú mať bezpečnostní špecialisti možnosť spolupracovať so správcami databáz a analytikmi. Aby aplikácia fungovala správne a bezpečne, tieto tímy sa snažia vysporiadať so slabými miestami zabezpečenia, ktoré majú spoločný základ. Dialógy medzi týmito tímami vyvolávajú určité problémy so skutočnou IP.

Proxy a koncepty skutočnej IP

Dnešné webové aplikácie bežia na viacerých aplikačných serveroch a databázových systémoch. Predstavte si dva aplikačné servery zdieľajúce rovnaký zdrojový kód. Požiadavky od používateľa sú pripravené na splnenie ktorýmkoľvek z týchto serverov v závislosti od situácie zaťaženia. Mechanizmus vyvažovania záťaže, ktorý spracováva požiadavky HTTP pred aplikačnými servermi, rozhoduje o tom, ktorá požiadavka sa má preposlať ktorému aplikačnému serveru. Toto predstavuje veľkú otázku pre správcov systému middleware a vývojárov softvéru: aká je skutočná IP adresa používateľa?

instagram viewer

Proxy majú na starosti prenos dát medzi dvoma systémami. Vyrovnávač zaťaženia je mechanizmus, ktorý má na starosti proxy. Inými slovami, len jeden systém komunikuje s používateľom aj s aplikačným serverom. Pokiaľ ide o sieťovú prevádzku, web A alebo web B servery vždy komunikujú s IP adresou load balanceru. To isté možno povedať o užívateľoch. Pre profesionálov v oblasti bezpečnosti spôsobujú nástroje na vyvažovanie záťaže vážne problémy pri útokoch na vstrekovanie SQL založených na čase. Ale Hlavným zameraním je tu spoofing IP.

X-Forwarded-For a IP Relationship

Zvážte vzťah medzi X-Forwarded-For, vývojárom a middleware. Povedzme napríklad, že úlohou vývojára aplikácie je zaznamenávať všetky aktivity, ako sú nesprávne pokusy používateľov o zadanie hesla, s ich IP adresami. Vývojár najprv určí IP adresu používateľa, keď je splnená požiadavka HTTP s príležitosť, ktorú poskytuje programovací jazyk, ktorý používa, a pokúsi sa tieto údaje naďalej používať v aplikácie.

Keďže jeho IP adresa bude počas vývojového procesu pevná, počas testov bude vždy vidieť rovnakú adresu, pretože vo všeobecnosti používateľské počítače v podnikové siete pracujú so statickou IP cez MAC adresu. Jednotka vykoná niekoľko akceptačných testov; s tými však budú problémy. Testovacia jednotka postúpi tento problém vývojárovi softvéru.

V tejto fáze môže vývojár napísať radič vo vývojovom prostredí a vidieť požiadavku HTTP odoslanú do aplikácie v surovej forme, pretože každý má rovnakú IP adresu. Výsledkom bude práca s X-Forwarded-For.

Informácie v hlavičke s názvom X-Forwarded-For budú odoslané na aplikačný server. V tejto fáze vývojár softvéru uvidí svoju IP adresu, ktorú ovláda pomocou ipconfig, nie load balancer, ktorý vidí v protokoloch. Mnoho programátorov si myslí, že tento problém môžu vyriešiť pomocou bloku kódu, ako je tento:

funkciugetIPaddress() {
$ipKeys = pole(
„HTTP_CLIENT_IP“,
„HTTP_X_FORWARDED_FOR“,
„HTTP_X_FORWARDED“,
„HTTP_X_CLUSTER_CLIENT_IP“,
„HTTP_FORWARDED_FOR“, „HTTP_FORWARDED“,
'REMOTE_ADDR'
);
pre každý ($ipKeys ako $key) {
ak (array_key_exists($key, $_SERVER) pravda) {
pre každý (explodovať (',', $_SERVER[$key]) ako $ip) {
$ip = trim($ip);
ak (validate_ip($ip)) {
vrátiť $ip;
}
}
}
}
vrátiťisset($_SERVER['REMOTE_ADDR'])? $_SERVER['REMOTE_ADDR']: falošný;
}

To nebude stačiť – vývojár musí skontrolovať, či je prichádzajúca hodnota platnou IP adresou.

Všetko vyššie patrilo časti, ktorú riešil vývojár. Aby však aplikácia fungovala správne a bezpečne, tímy – spolupracujúce teoreticky, ale v realitou, v extrémnych bodoch od seba – skúste sa vysporiadať s bezpečnostnými slabinami, ktoré majú a spoločný základ. Skúste sa teraz na problém pozrieť z pohľadu osoby zodpovednej za konfiguráciu load balanceru.

Správcovia systému si môžu myslieť, že vývojári zaznamenávajú informácie, ako napríklad X-Forwarded-For, pretože údajom v požiadavke HTTP nemožno dôverovať. Títo správcovia často prenášajú X-Forwarded-For; ako druhú hodnotu hlavičky však prenášajú aj zdrojovú adresu TCP systému, ktorý požiadavku odoslal. Štruktúra True-Client-IP je toho dobrým príkladom.

Keď dáte všetky tieto veci dohromady, dve rôzne jednotky sledujú rôzne cesty pre rovnaký problém, známy ako spoofing IP klienta. Výsledkom je kritický problém, pri ktorom nebude fungovať žiadne protokolovanie IP a autorizácia na základe IP.

Ako sa spoofing IP klienta zisťuje v penetračných testoch?

Väčšina penetračných testerov používa Firefox na svoje bezpečnostné kontroly. Konfigurujú Firefox pomocou jednoduchého doplnku X-Forwarded-For: 127.0.0.1 pre všetky požiadavky HTTP. A tak sa zvyšuje možnosť odhalenia takýchto zraniteľností vo všetkých penetračných testoch. Vykonanie auditu podľa Kontrolný zoznam OWASP zaisťuje, že skontrolujete takéto zraniteľnosti. Na odhalenie zraniteľnosti X-Forwarded-For však potrebujete v aplikácii modul, ktorý zobrazuje vašu IP adresu alebo vykonané akcie.

Ako vyriešiť zraniteľnosť X-Forwarded-For

Organizácie potrebujú povinný dokument o vývoji bezpečných aplikácií pre všetky softvérové ​​tímy a outsourcingové spoločnosti. Napríklad, ak potrebujete IP adresu používateľa, spoločnosť by mala plánovať dopredu a urobiť z toho pravidlo o informáciách v hlavičke, ktoré tu použije. V opačnom prípade budú rôzne tímy produkovať rôzne riešenia. Ak sa s takouto situáciou nepodarí poradiť, do hry vstúpia outsourcingové aplikácie, ktoré sťažia meranie zdrojových kódov. Vo všeobecnosti firmy nechcú ísť takouto cestou.

Ale na vyriešenie tohto problému môžete použiť nasledujúce pravidlo F5:

keď HTTP_REQUEST {
HTTP:: odstránenie hlavičky X-Forwarded-Pre
HTTP:: vloženie hlavičky X-Forwarded-Pre [IP:: remote_addr]
}

Tým sa odstráni pole X-Forwarded-For v požiadavke HTTP z vonkajšieho sveta. Potom odošle požiadavku pridaním IP adresy systému, ktorý do nej odoslal požiadavku. Týmto spôsobom sa vytvorí spoľahlivý zoznam pre softvér, ktorý funguje podľa X-Forwarded-For.

Aby som to zhrnul, najväčším cieľom je vykonať určité kontroly požiadaviek HTTP a vytvoriť spoľahlivé prostredie. Vyššie uvedený blok kódu je dobrým príkladom, ktorý na to môžete použiť.

Rámce kybernetickej bezpečnosti a dokumentácia pre podniky

Jednotky, ktoré sa zdajú byť na sebe nezávislé, sú v skutočnosti súčasťou celku. Preto musí všetko fungovať systematicky. Medzi každou jednotkou sa musia uplatňovať vopred stanovené pravidlá. Ak takýto fungujúci systém nie je prijatý, môže dôjsť k mnohým problémom, ako je napríklad zraniteľnosť X-Forwarded-For. Na tento účel by sa malo všetko zvážiť vopred a mala by sa použiť čo najkomplexnejšia dokumentácia.

A každá jednotka v tomto veľkom systéme musí prijať a implementovať rámce kybernetickej bezpečnosti. Vaším východiskovým bodom by malo byť skúmanie a učenie sa pracovnej logiky týchto rámcov.