Do česa lahko še vedno doseže kompromitiran spletni prehod?
Spletni prehod omejuje, kaj odpre obiskovalec, ne pa, do česa lahko doseže kompromitiran gostitelj. Dva pregleda, tabela pooblastil in ukazi za merjenje dosega.
Predpostavimo, da je gostitelj prehoda kompromitiran, medtem ko je njegov certifikat še veljaven. Vsako pravilo, ki je določalo, katere strani lahko obiskovalec zahteva, ostaja v veljavi, in nobeno od teh pravil ne omejuje povezave, ki jo napadalec zdaj odpre s tega gostitelja proti podmreži baze podatkov. Prav ta vrzel je razlog, da spletna vstopna točka ni ista trditev kot segmentirano omrežje. Obe trditvi zahtevata ločena pregleda, z različnih izhodišč, preden je mogoče katero od njiju pošteno izjaviti.
Dve trditvi in le ena od njiju se začne pri obiskovalcu
Prva trditev se nanaša na osebo: obiskovalec z brskalnikom in veljavno sejo lahko odpre eno aplikacijo in nič drugega. Spletna vstopna točka na to trditev dobro odgovori, ker obiskovalec prejme stran in ne poti. Ta odgovor je vreden, in je tudi edina trditev, ki jo zabeleži večina diagramov.
Druga trditev se nanaša na komponento: predpostavlja se, da je prehod ali aplikacijski proces za njim pod tujim nadzorom. Iz te predpostavke se vprašanje spremeni iz tega, katere URL so dovoljene, v to, do katerih ciljev in identitet lahko proces še doseže.
Trditvi imata različne lastnike, dajeta različne dokaze in neuspešno delujeta neodvisno. Ekipa za identiteto lahko prvo pokaže s testom seje; druga potrebuje omrežno politiko, pregled servisnega računa in nadzor gostitelja. Zasnova, ki zabeleži le polovico obiskovalca, je videti popolna na preglednem diapozitivu in tanka med incidentom, ker nadzori, ki štejejo po kompromitaciji, nikoli niso bili v obsegu. Poimenujte, katero trditev podpira vsak nadzor, sicer bo eno pravilo prehoda pripisano obema.
Izdelan primer storitve stroškov in dva načina, kako izgubi
Vzemimo storitev stroškov: javni prehod na 10.60.4.10 preveri osebje in posreduje odobrene zahteve poslušalcu aplikacije na vratih 8443, ta aplikacija pa doseže enega poslušalca PostgreSQL na 10.60.4.20:5432 kot vloga expenses_app. Zaposleni naj ne bi prejeli splošnega notranjega dostopa. V običajnem delovanju zasnova res zagotavlja vstop, specifičen za aplikacijo, ne da bi poslušalca baze podatkov kjer koli objavila. Naslovi so pomembni, ker jih vsako poznejše preverjanje v tem članku imenuje.
Zdaj odstranite prehod iz zaupanja vredne množice. Do katerih ciljev lahko 10.60.4.10 doseže, ko njegov proces pripada napadalcu? Filter URL, ki je omejeval obiskovalce, ne pove ničesar o povezavi, ki jo gostitelj prehoda odpre proti podmreži baze podatkov.
Namesto tega odstranite aplikacijski proces in pooblastila spremenijo obliko: vloga expenses_app, storitve, do katerih lahko ta strežnik doseže, in datoteke, ki jih ta račun lahko bere. V obeh primerih lahko sprednja vrata ostanejo samo spletna, medtem ko meja backend manjka. Zato oznaka na sprednjih vratih ni odgovor na nobeno od obeh vprašanj.
Zarišite pooblastila, ki jih vsaka stran dejansko ima
Pogodba, napisana kot predvidena dovoljenja, rada ponovi zasnovo nazaj. Napišite jo kot imetje pooblastil, preverjanje, ki ovrže presežek, in lastnika tega preverjanja, pa postane vsaka vrstica preverljiva. Ta tabela je predlog za zgornji primer, ne trditev o izdelku:
| 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 |
Lastništvo sledi pooblastilom. Ekipa za identiteto ima trditve, ekipa omrežne platforme ima poti, aplikacijska ekipa ima vlogo baze podatkov, skrbnik baze podatkov ima poslušalca in njegova pravila na podlagi gostitelja, lastnik platforme pa ima ravnino upravljanja. Zavrnitev brez lastnika je stavek v dokumentu, ne nadzor.
Delitev tudi preprečuje dvojno štetje. Omejitev vrat ne more izraziti privilegija tabele, vloga baze podatkov pa ne more preprečiti gostitelju, da odpre vtičnico v nepovezano podmrežo.
Naštejte, do česa lahko prehod doseže, namesto da to trdite
Trditev o meji je le tako dobra, kot je dober seznam za njo. Na gostitelju prehoda trije ukazi pokrivajo izbiro poti, živo preverjanje in izhodno politiko:
ip route get 10.60.4.20
nc -zv 10.60.4.20 5432
sudo nft list chain inet filter outputBerite izhod v tem vrstnem redu. Pot pove, ali se 10.60.4.20 s tega gostitelja sploh izbere; preverjanje pove, ali poslušalec odgovori; seznam pravil pokaže, ali politika ustavi paket ali pa na njegovi poti nikoli ni bilo ničesar.
Ponovite seznam z gostitelja aplikacije. Od tam je stran baze podatkov ena poizvedba, izvedena kot vloga aplikacije:
psql -h 10.60.4.20 -U expenses_app -d expenses -c 'select rolname, rolsuper, rolcreatedb from pg_roles'Uspešna povezava pod vlogo, ki ne more brati druge sheme, je drugačen rezultat kot uspešna povezava pod vlogo lastnika. Samo druga je ugotovitev.
Zabeležite zavrnitve in nato datum pregleda
Sprejem se zapiše kot rezultati in ne kot namere: seja zaposlenega ne more doseči poslušalca, gostitelj prehoda ne more doseči nepovezane podmreže in vloga aplikacije ne more ustvariti baze podatkov. Vsaka je ločeno preverjanje z imenovanim lastnikom in datumom.
Ohranjajte spremljanje, popravke in obnovitev dostopne po poti upravljanja, ki je namenjena njim. Meja, ki blokira tudi svojega lastnika, postane izpad, običajen prvi odziv na ta izpad pa je, da se pravilo znova razširi. Smernice CISA za obod zahtevajo omejitev dohodnega in izhodnega dostopa na upravičena vrata in protokole, vključno s prometom med notranjimi omrežji, kar je smer, ki jo sproži backend in jo večina diagramov izpusti.
Pregled datirajte in imenujte njegovega lastnika. Znova zaženite seznam in poizvedbo o privilegijih po vsaki spremembi slike prehoda, usmerjevalne tabele ali vloge aplikacije.