Šta kompromitovani web gateway još može dosegnuti?
Web gateway ograničava šta posjetilac otvara, a ne do čega kompromitovani host može uspostaviti vezu. Dva pregleda, tabela ovlaštenja i komande za provjeru dosega.
Pretpostavimo da je host gatewaya kompromitovan dok mu je certifikat još valjan. Svako pravilo koje je uređivalo koje stranice posjetilac može zatražiti ostaje na snazi, a nijedno od tih pravila ne ograničava vezu koju napadač sada otvara s tog hosta prema podmreži baze podataka. Taj jaz je razlog zašto web ulazna točka nije ista tvrdnja kao segmentirana mreža. Dvije tvrdnje traže odvojene preglede, s različitih polaznih točaka, prije nego se bilo koja od njih može pošteno iznijeti.
Dvije tvrdnje, a samo jedna počinje kod posjetioca
Prva tvrdnja tiče se osobe: posjetilac s preglednikom i valjanom sesijom može otvoriti jednu aplikaciju i ništa drugo. Web ulazna točka dobro odgovara na tu tvrdnju, jer posjetilac dobija stranicu, a ne rutu. Taj odgovor vrijedi imati, i to je ujedno jedina tvrdnja koju većina dijagrama bilježi.
Druga tvrdnja tiče se komponente: pretpostavlja se da je gateway, ili aplikacijski proces iza njega, pod tuđom kontrolom. Iz te pretpostavke pitanje se mijenja od toga koji su URL-ovi dozvoljeni na to kojim odredištima i identitetima proces još može dosegnuti.
Dvije tvrdnje imaju različite vlasnike, daju različite dokaze i nezavisno padaju. Identitetski tim može prvu pokazati sesijskim testom; druga traži mrežnu politiku, pregled servisnog računa i kontrole hosta. Dizajn koji bilježi samo polovinu posjetioca izgleda potpun na slajdu pregleda i tanak tokom incidenta, jer kontrole koje su važne nakon kompromitacije nikada nisu bile u obuhvatu. Imenujte koju tvrdnju svaka kontrola podržava, inače će se jedno gateway pravilo pripisati objema.
Razrađena usluga troškova i dva načina na koja gubi
Uzmimo uslugu troškova: javni gateway na 10.60.4.10 autentificira osoblje i prosljeđuje odobrene zahtjeve aplikacijskom slušaocu na portu 8443, a ta aplikacija doseže jedan PostgreSQL slušalac na 10.60.4.20:5432 kao uloga expenses_app. Zaposleni ne treba da dobiju opći interni pristup. U normalnom radu dizajn zaista pruža ulaz specifičan za aplikaciju bez objavljivanja slušaoca baze podataka bilo gdje. Adrese su važne, jer ih svaka provjera kasnije u ovom članku imenuje.
Sada uklonite gateway iz pouzdanog skupa. Kojim odredištima 10.60.4.10 može dosegnuti kada njegov proces pripada napadaču? URL filter koji je ograničavao posjetioce ne govori ništa o vezi koju host gatewaya otvara prema podmreži baze podataka.
Uklonite umjesto toga aplikacijski proces, i ovlaštenja mijenjaju oblik: uloga expenses_app, usluge do kojih taj server može doći i datoteke koje taj račun može čitati. U oba slučaja prednja vrata mogu ostati samo web dok stražnja granica izostaje. Zato oznaka na prednjim vratima nije odgovor ni na jedno od dva pitanja.
Mapirajte ovlaštenja koja svaka strana zapravo ima
Ugovor napisan kao namjeravane dozvole običava vam ponoviti dizajn. Napišite ga kao posjedovana ovlaštenja, provjeru koja opovrgava višak i vlasnika te provjere, i svaki red postaje provjerljiv. Ova tabela je prijedlog za gornji primjer, a ne tvrdnja o proizvodu:
| Component | Authority it actually holds | Check that proves the denial | Owner of the check |
|---|---|---|---|
| Identity provider | Issues assertions and session cookies, and holds no network path of its own | A request to the application URL without a session is redirected to the login page | Identity team |
| Public gateway host | TCP reachability to whatever its routing table and egress rules permit | An egress rule drops 10.60.4.20:5432 and the probe reports the port filtered | Network platform team |
| Application role | SQL privileges granted to expenses_app inside the expenses database | A privilege query shows no ownership or create right on any other schema | Application team |
| Database listener | Accepts connections only from the source ranges named in its host-based rules | A connection from an unlisted address is refused before authentication | Database administrator |
| Management path | Administrative access reserved for patching, monitoring and recovery | A staff workstation cannot reach the administrative port or jump through it | Platform owner |
Vlasništvo slijedi ovlaštenja. Identitetski tim posjeduje tvrdnje, tim mrežne platforme posjeduje putanje, aplikacijski tim posjeduje ulogu baze podataka, administrator baze podataka posjeduje slušaoca i njegova pravila zasnovana na hostu, a vlasnik platforme posjeduje upravljačku ravan. Uskraćivanje bez vlasnika je rečenica u dokumentu, a ne kontrola.
Podjela također sprječava dvostruko brojanje. Ograničenje porta ne može izraziti privilegiju tabele, a uloga baze podataka ne može spriječiti host da otvori socket prema nepovezanoj podmreži.
Nabrojte šta gateway može dosegnuti umjesto da to tvrdite
Tvrdnja o granici vrijedi onoliko koliko vrijedi nabrajanje iza nje. Na hostu gatewaya tri komande pokrivaju odabir rute, provjeru uživo i izlaznu politiku:
ip route get 10.60.4.20
nc -zv 10.60.4.20 5432
sudo nft list chain inet filter outputČitajte izlaz tim redom. Ruta kaže bira li se 10.60.4.20 uopće s tog hosta; provjera kaže odgovara li slušalac; popis pravila pokazuje zaustavlja li politika paket ili u njegovoj putanji nikada ničega nije bilo.
Ponovite nabrajanje s hosta aplikacije. Odatle je strana baze podataka jedan upit pokrenut kao aplikacijska uloga:
psql -h 10.60.4.20 -U expenses_app -d expenses -c 'select rolname, rolsuper, rolcreatedb from pg_roles'Uspješna veza pod ulogom koja ne može čitati drugu shemu drugačiji je rezultat od uspješne veze pod ulogom vlasnika. Samo je druga nalaz.
Zabilježite uskraćivanja, zatim datirajte pregled
Prihvaćanje se piše kao ishodi, a ne namjere: sesija zaposlenog ne može dosegnuti slušaoca, host gatewaya ne može dosegnuti nepovezanu podmrežu, a aplikacijska uloga ne može stvoriti bazu podataka. Svaka je odvojena provjera s imenovanim vlasnikom i datumom.
Držite nadzor, zakrpe i oporavak dostupnima kroz upravljačku putanju namijenjenu njima. Granica koja blokira i svog vlasnika postaje prekid rada, a uobičajena prva reakcija na taj prekid jest da se pravilo ponovo proširi. CISA smjernice za perimetar traže da ulazni i izlazni pristup bude ograničen na opravdane portove i protokole, uključujući saobraćaj između internih mreža, što je smjer koji inicira stražnji sistem i koji većina dijagrama izostavlja.
Datirajte pregled i imenujte njegovog vlasnika. Ponovno pokrenite nabrajanje i upit privilegija nakon svake promjene slike gatewaya, tabele ruta ili aplikacijske uloge.