Čtenáři jako vy pomáhají podporovat MUO. Když provedete nákup pomocí odkazů na našich stránkách, můžeme získat provizi přidružené společnosti. Přečtěte si více.

Jednou z výhod být bezpečnostním specialistou je práce s mnoha týmy. Po auditu budou mít bezpečnostní specialisté příležitost spolupracovat se správci databází a analytiky. Aby aplikace fungovala správně a bezpečně, snaží se tyto týmy vypořádat s bezpečnostními chybami, které mají společný základ. Dialogy mezi těmito týmy vyvolávají určité problémy se skutečným IP.

Koncepty proxy a skutečné IP

Dnešní webové aplikace běží na více aplikačních serverech a databázových systémech. Představte si dva aplikační servery sdílející stejný zdrojový kód. Požadavky od uživatele jsou připraveny ke splnění kterýmkoli z těchto serverů v závislosti na situaci zatížení. Mechanismus vyvažování zátěže, který zpracovává požadavky HTTP před aplikačními servery, rozhoduje o tom, který požadavek se má předat kterému aplikačnímu serveru. To představuje velkou otázku pro správce middlewarového systému a vývojáře softwaru: jaká je skutečná IP adresa uživatele?

instagram viewer

Proxy mají na starosti přenos dat mezi dvěma systémy. Load balancer je mechanismus, který má na starosti proxy. Jinými slovy, pouze jeden systém komunikuje jak s uživatelem, tak s aplikačním serverem. Pokud jde o síťový provoz, web A nebo web B servery vždy komunikují s IP adresou load balanceru. Totéž lze říci o uživatelích. Bezpečnostním profesionálům způsobují nástroje pro vyrovnávání zátěže vážné problémy při útocích s injekcí SQL založených na čase. Ale hlavní důraz je zde kladen na IP spoofing.

X-Forwarded-For a IP Relationship

Zvažte vztah mezi X-Forwarded-For, vývojářem a middlewarem. Řekněme například, že úkolem vývojáře aplikace je zaznamenávat všechny aktivity, jako jsou nesprávné pokusy uživatelů o heslo, s jejich IP adresami. Nejprve vývojář určí IP adresu uživatele, když je požadavek HTTP splněn s příležitost, kterou poskytuje programovací jazyk, který používá, a bude se snažit tato data nadále používat v aplikace.

Vzhledem k tomu, že jeho IP adresa bude během vývojového procesu pevná, bude během testů vždy vidět stejnou adresu, protože obecně platí, že uživatelské počítače v firemní sítě pracují se statickou IP přes MAC adresu. Jednotka provede některé akceptační testy; s těmito však budou problémy. Testovací jednotka předá tento problém vývojáři softwaru.

V této fázi může vývojář napsat řadič ve vývojovém prostředí a vidět požadavek HTTP přenesený do aplikace v nezpracované podobě, protože všichni mají stejnou IP adresu. Výsledkem bude práce s X-Forwarded-For.

Informace v záhlaví s názvem X-Forwarded-For bude odeslána na aplikační server. V této fázi vývojář softwaru uvidí svou IP adresu, kterou ovládá pomocí ipconfig, nikoli load balancer, který vidí v protokolech. Mnoho programátorů si myslí, že mohou tento problém vyřešit blokem kódu, jako je tento:

funkcegetIPaddress() {
$ipKeys = pole(
„HTTP_CLIENT_IP“,
„HTTP_X_FORWARDED_FOR“,
„HTTP_X_FORWARDED“,
„HTTP_X_CLUSTER_CLIENT_IP“,
„HTTP_FORWARDED_FOR“, „HTTP_FORWARDED“,
'REMOTE_ADDR'
);
pro každého ($ipKeys tak jako $key) {
-li (array_key_exists($key, $_SERVER) skutečný) {
pro každého (explodovat(',', $_SERVER[$key]) tak jako $ip) {
$ip = trim($ip);
-li (validate_ip($ip)) {
vrátit se $ip;
}
}
}
}
vrátit seisset($_SERVER['REMOTE_ADDR'])? $_SERVER['REMOTE_ADDR']: Nepravdivé;
}

To nebude stačit – vývojář musí zkontrolovat, zda je příchozí hodnota platnou IP adresou.

Vše výše uvedené patřilo k části, kterou řešil vývojář. Ale aby aplikace fungovala správně a bezpečně, týmy – spolupracující teoreticky, ale v reality, v extrémních bodech od sebe navzájem – zkuste se vypořádat s bezpečnostními zranitelnostmi, které mají a společný základ. Zkuste se nyní na problematiku podívat z pohledu osoby odpovědné za konfiguraci load balanceru.

Správci systému si mohou myslet, že vývojáři zaznamenávají informace jako X-Forwarded-For, protože datům v požadavku HTTP nelze důvěřovat. Tito správci často přenášejí X-Forwarded-For; nicméně také přenášejí zdrojovou adresu TCP systému, který odeslal požadavek, jako hodnotu druhé hlavičky. Struktura True-Client-IP je toho dobrým příkladem.

Když dáte všechny tyto věci dohromady, dvě různé jednotky sledují různé cesty ke stejnému problému, známému jako spoofing IP klienta. Výsledkem je kritický problém, kdy nebude fungovat žádné protokolování IP ani autorizace na základě IP.

Jak se v penetračních testech zjišťuje spoofing IP klienta?

Většina penetračních testerů používá pro své bezpečnostní kontroly Firefox. Konfigurují Firefox pomocí jednoduchého doplňku X-Forwarded-For: 127.0.0.1 pro všechny požadavky HTTP. A tak se zvyšuje možnost odhalení takových zranitelností ve všech penetračních testech. Provedení auditu dle Kontrolní seznam OWASP zajišťuje, že takové chyby zabezpečení zkontrolujete. K detekci zranitelnosti X-Forwarded-For však potřebujete modul v aplikaci, který zobrazuje vaši IP adresu nebo provedené akce.

Jak vyřešit zranitelnost X-Forwarded-For

Organizace potřebují povinný dokument o vývoji zabezpečené aplikace pro všechny softwarové týmy a outsourcingové společnosti. Pokud například potřebujete IP adresu uživatele, společnost by měla plánovat dopředu a stanovit z něj pravidlo pro informace v záhlaví, které zde použije. Jinak budou různé týmy produkovat různá řešení. Pokud takovou situaci nelze řešit, přijdou na řadu outsourcingové aplikace, které znesnadní měření zdrojových kódů. Obecně firmy takovou cestou jít nechtějí.

K vyřešení tohoto problému však můžete použít následující pravidlo F5:

když HTTP_REQUEST {
HTTP:: odstranění záhlaví X-Forwarded-Pro
HTTP:: vložení záhlaví X-Forwarded-Pro [IP:: remote_addr]
}

Tím se odebere pole X-Forwarded-For v požadavku HTTP z vnějšího světa. Poté odešle požadavek přidáním IP adresy systému, který mu požadavek odeslal. Tímto způsobem se vytvoří spolehlivý seznam pro software, který se chová podle X-Forwarded-For.

Abychom to shrnuli, největším cílem je provést některé kontroly HTTP požadavků a vytvořit spolehlivé prostředí. Blok kódu výše je dobrým příkladem, který k tomu můžete použít.

Rámce kybernetické bezpečnosti a dokumentace pro podniky

Jednotky, které se zdají být na sobě nezávislé, jsou ve skutečnosti součástí celku. Vše proto musí fungovat systematicky. Mezi každou jednotkou musí platit předem stanovená pravidla. Pokud takový fungující systém není přijat, může dojít k mnoha problémům, jako je zranitelnost X-Forwarded-For. K tomu je třeba vše předem zvážit a použít co nejkomplexnější dokumentaci.

A každá jednotka v tomto velkém systému musí přijmout a implementovat rámce kybernetické bezpečnosti. Vaším výchozím bodem by mělo být prozkoumat a naučit se pracovní logiku těchto rámců.