Što kompromitirani web gateway još može dosegnuti?
Web gateway ograničava što posjetitelj otvara, a ne do čega kompromitirani host može uspostaviti vezu. Dva pregleda, tablica ovlasti i naredbe za provjeru dosega.
Pretpostavimo da je host gatewaya kompromitiran dok mu je certifikat još valjan. Svako pravilo koje je uređivalo koje stranice posjetitelj 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 je jaz razlog zašto web ulazna točka nije ista tvrdnja kao segmentirana mreža. Dvije tvrdnje traže odvojene preglede, s različitih polazišta, prije nego se bilo koja od njih može pošteno iznijeti.
Dvije tvrdnje, a samo jedna počinje kod posjetitelja
Prva tvrdnja tiče se osobe: posjetitelj s preglednikom i valjanom sesijom može otvoriti jednu aplikaciju i ništa drugo. Web ulazna točka dobro odgovara na tu tvrdnju jer posjetitelj dobiva 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 dopušteni na to kojim odredištima i identitetima proces još može dosegnuti.
Dvije tvrdnje imaju različite vlasnike, daju različite dokaze i neovisno 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 polovicu posjetitelja izgleda potpun na slajdu pregleda i tanak tijekom incidenta, jer kontrole koje su važne nakon kompromitacije nikada nisu bile u obuhvatu. Imenujte koju tvrdnju svaka kontrola podupire, 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šatelju na portu 8443, a ta aplikacija doseže jedan PostgreSQL slušatelj na 10.60.4.20:5432 kao uloga expenses_app. Zaposlenici ne trebaju dobiti opći interni pristup. U normalnom radu dizajn doista pruža ulaz specifičan za aplikaciju bez objavljivanja slušatelja 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 filtar koji je ograničavao posjetitelje 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 poslužitelj 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 dvaju pitanja.
Mapirajte ovlasti koje svaka strana zapravo ima
Ugovor napisan kao namjeravana dopuštenja običava vam ponoviti dizajn. Napišite ga kao posjedovane ovlasti, provjeru koja opovrgava višak i vlasnika te provjere, i svaki redak postaje provjerljiv. Ova je tablica 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 ovlasti. Identitetski tim posjeduje tvrdnje, tim mrežne platforme posjeduje putanje, aplikacijski tim posjeduje ulogu baze podataka, administrator baze podataka posjeduje slušatelja i njegova pravila zasnovana na hostu, a vlasnik platforme posjeduje upravljačku ravninu. Uskrata bez vlasnika rečenica je u dokumentu, a ne kontrola.
Podjela također sprječava dvostruko brojanje. Ograničenje porta ne može izraziti privilegij tablice, a uloga baze podataka ne može spriječiti host da otvori socket prema nepovezanoj podmreži.
Nabrojite što gateway može dosegnuti umjesto da to tvrdite
Tvrdnja o granici vrijedi onoliko koliko vrijedi nabrajanje iza nje. Na hostu gatewaya tri naredbe 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šatelj; 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 drukčiji je rezultat od uspješne veze pod ulogom vlasnika. Samo je druga nalaz.
Zabilježite uskrate, zatim datirajte pregled
Prihvaćanje se piše kao ishodi, a ne namjere: sesija zaposlenika ne može dosegnuti slušatelja, 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 ponovno proširiti pravilo. CISA smjernice za perimetar traže da ulazni i izlazni pristup bude ograničen na opravdane portove i protokole, uključujući promet između internih mreža, što je smjer koji inicira stražnji sustav i koji većina dijagrama izostavlja.
Datirajte pregled i imenujte njegova vlasnika. Ponovno pokrenite nabrajanje i upit privilegija nakon svake promjene slike gatewaya, tablice usmjeravanja ili aplikacijske uloge.