Čo ešte môže kompromitovaná webová brána dosiahnuť?
Webová brána obmedzuje, čo návštevník otvorí, nie to, kam sa kompromitovaný hostiteľ môže pripojiť. Dve revízie, tabuľka oprávnení a príkazy na meranie dosahu.
Predpokladajme, že hostiteľ brány je kompromitovaný, zatiaľ čo jeho certifikát je stále platný. Každé pravidlo, ktoré určovalo, ktoré stránky môže návštevník požadovať, zostáva v platnosti a žiadne z týchto pravidiel neobmedzuje spojenie, ktoré útočník teraz otvára z tohto hostiteľa smerom k podsieti databázy. Práve táto medzera je dôvod, prečo webový vstupný bod nie je to isté tvrdenie ako segmentovaná sieť. Obe tvrdenia vyžadujú samostatné revízie, z rôznych východiskových bodov, než možno ktorékoľvek z nich poctivo vysloviť.
Dve tvrdenia a iba jedno z nich začína u návštevníka
Prvé tvrdenie sa týka človeka: návštevník s prehliadačom a platnou reláciou môže otvoriť jednu aplikáciu a nič iné. Webový vstupný bod na toto tvrdenie dobre odpovedá, pretože návštevník dostáva stránku, nie trasu. Taká odpoveď má cenu a je aj jediným tvrdením, ktoré väčšina diagramov zaznamenáva.
Druhé tvrdenie sa týka komponentu: predpokladá sa, že brána alebo proces aplikácie za ňou je pod cudzou kontrolou. Z tohto predpokladu sa otázka mení z toho, ktoré URL sú povolené, na to, ku ktorým cieľom a identitám sa proces ešte môže dostať.
Obe tvrdenia majú rôznych vlastníkov, poskytujú rôzne dôkazy a zlyhávajú nezávisle. Tím identity môže prvé doložiť testom relácie; druhé potrebuje sieťovú politiku, revíziu servisného účtu a ovládacie prvky hostiteľa. Návrh, ktorý zaznamenáva len polovicu návštevníka, vyzerá úplne na prezentačnom slide a slabo počas incidentu, pretože ovládacie prvky, na ktorých po kompromitácii záleží, nikdy neboli v rozsahu. Pomenujte, ktoré tvrdenie každý prvok podporuje, inak sa jedno pravidlo brány pripíše obom.
Spracovaný príklad výdavkovej služby a dva spôsoby, ako prehráva
Vezmite výdavkovú službu: verejná brána na 10.60.4.10 overuje zamestnancov a posiela schválené požiadavky počúvajúcemu procesu aplikácie na porte 8443 a táto aplikácia dosahuje jedného počúvajúceho PostgreSQL na 10.60.4.20:5432 ako rola expenses_app. Zamestnanci nemajú dostávať všeobecný interný prístup. Pri normálnej prevádzke návrh skutočne poskytuje vstup špecifický pre aplikáciu bez toho, aby počúvajúceho databázy niekde zverejnil. Adresy sú dôležité, pretože každá ďalšia kontrola v tomto článku ich pomenúva.
Teraz odstráňte bránu z dôveryhodnej množiny. Ku ktorým cieľom sa môže 10.60.4.10 dostať, keď jeho proces patrí útočníkovi? Filter URL, ktorý obmedzoval návštevníkov, nehovorí nič o spojení, ktoré hostiteľ brány otvára smerom k podsieti databázy.
Odstráňte namiesto toho proces aplikácie a oprávnenia menia tvar: rola expenses_app, služby, ku ktorým sa tento server môže dostať, a súbory, ktoré tento účet môže čítať. V oboch prípadoch môžu predné dvere zostať len webové, zatiaľ čo hranica backendu chýba. Označenie na predných dverách preto nie je odpoveďou na žiadnu z dvoch otázok.
Zmapujte oprávnenia, ktoré každá strana skutočne má
Zmluva napísaná ako zamýšľané povolenia má vo zvyku opakovať vám návrh. Napíšte ju ako držané oprávnenie, kontrolu, ktorá vyvracia prebytok, a vlastníka tejto kontroly, a každý riadok sa stane testovateľným. Táto tabuľka je návrh pre uvedený príklad, nie tvrdenie o produkte:
| 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 |
Vlastníctvo nasleduje oprávnenie. Tím identity vlastní tvrdenia, tím sieťovej platformy vlastní trasy, aplikačný tím vlastní rolu databázy, správca databázy vlastní počúvajúceho a jeho pravidlá založené na hostiteľovi a vlastník platformy vlastní rovinu správy. Zamietnutie bez vlastníka je veta v dokumente, nie kontrola.
Rozdelenie tiež zabraňuje dvojitému započítaniu. Obmedzenie portu nemôže vyjadriť privilegium tabuľky a rola databázy nemôže zabrániť hostiteľovi otvoriť socket k nesúvisiacej podsieti.
Vymenujte, čo môže brána dosiahnuť, namiesto toho, aby ste to tvrdili
Tvrdenie o hranici je len také dobré, aký dobrý je výpočet za ním. Na hostiteľovi brány tri príkazy pokrývajú výber trasy, živú sondu a výstupnú politiku:
ip route get 10.60.4.20
nc -zv 10.60.4.20 5432
sudo nft list chain inet filter outputČítajte výstup v tomto poradí. Trasa hovorí, či sa 10.60.4.20 z tohto hostiteľa vôbec vyberá; sonda hovorí, či počúvajúci odpovedá; výpis pravidiel ukazuje, či politika paket zastaví, alebo či v jeho ceste nikdy nič nebolo.
Zopakujte výpočet z hostiteľa aplikácie. Odtiaľ je strana databázy jediným dotazom spusteným ako rola aplikácie:
psql -h 10.60.4.20 -U expenses_app -d expenses -c 'select rolname, rolsuper, rolcreatedb from pg_roles'Úspešné spojenie pod rolou, ktorá nemôže čítať inú schému, je iný výsledok než úspešné spojenie pod rolou vlastníka. Iba druhé je zistenie.
Zaznamenajte zamietnutia a potom revíziu datujte
Prijatie sa píše ako výsledky, nie ako zámery: relácia zamestnanca nemôže dosiahnuť počúvajúceho, hostiteľ brány nemôže dosiahnuť nesúvisiacu podsiet a rola aplikácie nemôže vytvoriť databázu. Každá je samostatná kontrola s pomenovaným vlastníkom a dátumom.
Udržujte monitorovanie, záplatovanie a obnovu dostupné cez cestu správy, ktorá je pre ne určená. Hranica, ktorá blokuje aj svojho vlastníka, sa stáva výpadkom a obvyklou prvou reakciou na taký výpad je pravidlo znova rozšíriť. Pokyny CISA k perimetru žiadajú obmedziť prichádzajúci a odchádzajúci prístup na odôvodnené porty a protokoly vrátane prevádzky medzi internými sieťami, čo je smer iniciovaný backendom, ktorý väčšina diagramov vynecháva.
Revíziu datujte a pomenujte jej vlastníka. Po každej zmene image brány, smerovacej tabuľky alebo roly aplikácie znova spustite výpočet a dotaz na privilegiá.