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:

ComponentAuthority it actually holdsCheck that proves the denialOwner of the check
Identity providerIssues assertions and session cookies, and holds no network path of its ownA request to the application URL without a session is redirected to the login pageIdentity team
Public gateway hostTCP reachability to whatever its routing table and egress rules permitAn egress rule drops 10.60.4.20:5432 and the probe reports the port filteredNetwork platform team
Application roleSQL privileges granted to expenses_app inside the expenses databaseA privilege query shows no ownership or create right on any other schemaApplication team
Database listenerAccepts connections only from the source ranges named in its host-based rulesA connection from an unlisted address is refused before authenticationDatabase administrator
Management pathAdministrative access reserved for patching, monitoring and recoveryA staff workstation cannot reach the administrative port or jump through itPlatform 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 output

Berite 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.

Sorodni članki