Bralci, kot ste vi, pomagajo podpirati MUO. Ko opravite nakup prek povezav na našem spletnem mestu, lahko zaslužimo partnersko provizijo. Preberi več.

Ena od prednosti varnostnega strokovnjaka je delo s številnimi ekipami. Po opravljeni reviziji bodo varnostni strokovnjaki imeli priložnost sodelovati z skrbniki baz podatkov in analitiki. Da bi aplikacija delovala pravilno in varno, te ekipe poskušajo odpraviti varnostne ranljivosti, ki imajo skupno osnovo. Dialogi med temi skupinami sprožajo nekaj težav z resničnim IP-jem.

Koncepti proxy in real IP

Današnje spletne aplikacije delujejo na več strežnikih aplikacij in sistemih baz podatkov. Predstavljajte si dva aplikacijska strežnika, ki si delita isto izvorno kodo. Zahteve uporabnikov so pripravljene, da jih izpolni kateri koli od teh strežnikov, odvisno od situacije obremenitve. Mehanizem za uravnoteženje obremenitve, ki obravnava zahteve HTTP pred aplikacijskimi strežniki, se odloči, katero zahtevo bo posredoval kateremu aplikacijskemu strežniku. To postavlja veliko vprašanje za sistemske skrbnike vmesne programske opreme in razvijalce programske opreme: kakšen je dejanski naslov IP uporabnika?

instagram viewer

Proxyji so zadolženi za prenos podatkov med dvema sistemoma. Izravnalnik obremenitve je mehanizem, ki skrbi za proxy. Z drugimi besedami, samo en sistem komunicira z uporabnikom in aplikacijskim strežnikom. Kar zadeva omrežni promet, spletni strežniki A ali spletni B vedno komunicirajo z naslovom IP izravnalnika obremenitve. Enako lahko rečemo za uporabnike. Varnostnim strokovnjakom povzročajo uravnavalniki obremenitve resne težave pri napadih z vbrizgavanjem SQL na podlagi časa. Toda glavni poudarek tukaj je ponarejanje naslovov IP.

X-Forwarded-For in razmerje IP

Razmislite o razmerju med X-Forwarded-For, razvijalcem in vmesno programsko opremo. Na primer, recimo, da je naloga razvijalca aplikacije, da beleži vse aktivnosti, kot so napačni poskusi vnosa gesla s strani uporabnikov, z njihovimi naslovi IP. Najprej bo razvijalec določil naslov IP uporabnika, ko bo zahteva HTTP izpolnjena z priložnost, ki jo ponuja programski jezik, ki ga uporablja, in bo poskušal še naprej uporabljati te podatke v aplikacija.

Ker bo njegov naslov IP med razvojnim postopkom nespremenljiv, bo med preizkusi vedno videl isti naslov, ker na splošno uporabniški računalniki v poslovna omrežja delujejo s statičnim IP-jem prek naslova MAC. Enota bo opravila nekaj sprejemnih testov; vendar bodo s temi problemi. Testna enota bo to težavo posredovala razvijalcu programske opreme.

Na tej stopnji lahko razvijalec napiše krmilnik v razvojnem okolju in vidi zahtevo HTTP, poslano aplikaciji v neobdelani obliki, saj imajo vsi enak naslov IP. Posledica tega bo delo z X-Forwarded-For.

Informacije o glavi imenovan X-Forwarded-For bo poslan na aplikacijski strežnik. Na tej stopnji bo razvijalec programske opreme videl svoj naslov IP, ki ga nadzoruje z ipconfig, ne pa izravnalnika obremenitve, ki ga vidi v dnevnikih. Mnogi programerji mislijo, da lahko to težavo rešijo z blokom kode, kot je ta:

funkcijogetIPaddress() {
$ipKeys = niz(
'HTTP_CLIENT_IP',
'HTTP_X_FORWARDED_FOR',
'HTTP_X_FORWARDED',
'HTTP_X_CLUSTER_CLIENT_IP',
'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED',
'REMOTE_ADDR'
);
za vsakogar ($ipKeys kot $key) {
če (array_key_exists($key, $_SERVER) prav) {
za vsakogar (eksplodira(',', $_SERVER[$key]) kot $ip) {
$ip = trim($ip);
če (validate_ip($ip)) {
vrnitev $ip;
}
}
}
}
vrnitevisset($_SERVER['REMOTE_ADDR'])? $_SERVER['REMOTE_ADDR']: lažno;
}

To ne bo dovolj – razvijalec mora preveriti, ali je dohodna vrednost veljaven naslov IP.

Vse zgoraj je pripadalo delu, ki ga je obravnaval razvijalec. Da pa bi aplikacija delovala pravilno in varno, morajo ekipe – ki delajo skupaj v teoriji, a v realnosti, na skrajnih točkah drug od drugega – poskusite se soočiti z varnostnimi ranljivostmi, ki imajo a skupna osnova. Zdaj poskusite pogledati na težavo z vidika osebe, odgovorne za konfiguracijo izravnalnika obremenitve.

Sistemski skrbniki morda mislijo, da razvijalci beležijo informacije, kot je X-Forwarded-For, ker podatkom v zahtevi HTTP ni mogoče zaupati. Ti skrbniki pogosto posredujejo X-Forwarded-For; vendar posredujejo tudi izvorni naslov TCP sistema, ki je poslal zahtevo, kot drugo vrednost glave. Struktura True-Client-IP je dober primer tega.

Ko združite vse te stvari, sledita dve različni enoti različnim potem za isto težavo, znano kot ponarejanje naslova IP odjemalca. Rezultat je kritična težava, pri kateri nobeno beleženje IP in avtorizacija na podlagi IP ne delujeta.

Kako se v penetracijskih testih odkrije ponarejanje IP-ja odjemalca?

Večina preizkuševalcev penetracije uporablja Firefox za svoje varnostne preglede. Firefox konfigurirajo s preprostim dodatkom X-Forwarded-For: 127.0.0.1 za vse zahteve HTTP. In tako se poveča možnost odkrivanja takšnih ranljivosti v vseh testih prodora. Izvedba revizije po Kontrolni seznam OWASP zagotavlja, da preverite takšne ranljivosti. Za odkrivanje ranljivosti X-Forwarded-For pa potrebujete modul v aplikaciji, ki prikazuje vaš naslov IP ali izvedena dejanja.

Kako rešiti ranljivost X-Forwarded-For

Organizacije potrebujejo obvezen varen dokument za razvoj aplikacij za vse skupine programske opreme in zunanje izvajalce. Na primer, če potrebujete naslov IP uporabnika, mora podjetje načrtovati vnaprej in določiti pravilo o informacijah v glavi, ki jih bo tukaj uporabljalo. V nasprotnem primeru bodo različne ekipe izdelale različne rešitve. Če takšne situacije ni mogoče rešiti, pride v poštev zunanje izvajanje aplikacij, kar oteži merjenje izvornih kod. Na splošno podjetja ne želijo iti po taki poti.

Toda za rešitev te težave lahko uporabite naslednje pravilo F5:

ko HTTP_REQUEST {
HTTP:: glava odstrani X-Forwarded-Za
HTTP:: header insert X-Forwarded-Za [IP:: oddaljeni_naslov]
}

S tem odstranite polje X-Forwarded-For v zahtevi HTTP iz zunanjega sveta. Nato pošlje zahtevo tako, da doda naslov IP sistema, ki mu je poslal zahtevo. Na ta način se ustvari zanesljiv seznam za programsko opremo, ki deluje v skladu z X-Forwarded-For.

Če povzamem, največji cilj tukaj je izvesti nekaj preverjanj zahtev HTTP in ustvariti zanesljivo okolje. Zgornji blok kode je dober primer, ki ga lahko uporabite za to.

Okviri kibernetske varnosti in dokumentacija za podjetja

Enote, ki se zdijo neodvisne druga od druge, so pravzaprav deli celote. Zato mora vse delovati sistematično. Vnaprej določena pravila morajo veljati med vsako enoto. Če tak delujoč sistem ni sprejet, se lahko pojavijo številne težave, kot je ranljivost X-Forwarded-For. Za to je treba vse predhodno pretehtati in uporabiti čim obsežnejšo dokumentacijo.

In vsaka enota v tem velikem sistemu mora sprejeti in izvajati okvire kibernetske varnosti. Vaše izhodišče bi moralo biti raziskovanje in učenje delovne logike teh okvirov.