Mida saab kompromiteeritud veebilüüs veel saavutada?
Veebilüüs piirab seda, mida külastaja avab, mitte seda, mida kompromiteeritud host saab ühendada. Kaks ülevaatust, volituste tabel ja ulatuse kontrollimise käsud.
Oletame, et lüüsi host on kompromiteeritud, kui selle sertifikaat kehtib veel. Iga reegel, mis määras, milliseid lehti külastaja võib nõuda, jääb kehtima ja ükski neist reeglitest ei piira ühendust, mille ründaja nüüd sellelt hostilt andmebaasi alavõrgu suunas avab. Just see lünk on põhjus, miks ainult veebi ligipääsupunkt ei ole sama väide kui segmenteeritud võrk. Need kaks väidet nõuavad eraldi ülevaatusi, erinevatest lähtepunktidest, enne kui kumbagi saab ausalt esitada.
Kaks väidet ja ainult üks neist algab külastaja juures
Esimene väide puudutab inimest: brauseri ja kehtiva sessiooniga külastaja saab avada ühe rakenduse ega midagi muud. Ainult veebi ligipääsupunkt vastab sellele väitele hästi, sest külastaja saab lehe, mitte marsruudi. See vastus on väärt omamist ja see on ka ainus väide, mille enamik diagramme fikseerib.
Teine väide puudutab komponenti: eeldatakse, et lüüs või selle taga olev rakendusprotsess on kellegi teise kontrolli all. Sellest eeldusest muutub küsimus sellest, millised URL-id on lubatud, selleks, milliseid sihtkohti ja identiteete suudab protsess veel saavutada.
Kahel väitel on erinevad omanikud, need annavad erinevaid tõendeid ja ebaõnnestuvad sõltumatult. Identiteedimeeskond saab esimest tõestada sessioonitestiga; teine vajab võrgupoliitikat, teenusekonto ülevaatust ja hosti kontrolle. Kujundus, mis fikseerib ainult külastaja poole, näeb ülevaatuse slaidil täielik välja ja on intsidendi ajal hõre, sest kompromiteerimise järel olulised kontrollid ei olnud kunagi ulatuses. Nimetage, millist väidet iga kontroll toetab, muidu arvestatakse üks lüüsireegel mõlemale.
Läbitöötatud kulutusteenus ja kaks viisi, kuidas see kaotab
Võtame kulutusteenuse: avalik lüüs aadressil 10.60.4.10 autendib personali ja edastab kinnitatud taotlused rakenduse kuulajale pordil 8443 ning see rakendus jõuab ühe PostgreSQL-i kuulajani aadressil 10.60.4.20:5432 rollina expenses_app. Töötajad ei peaks saama üldist sisemist juurdepääsu. Tavalises töös annab kujundus tõepoolest rakendusepõhise sissepääsu, avaldamata andmebaasi kuulajat kusagil. Aadressid on olulised, sest iga hilisem kontroll selles artiklis nimetab neid.
Nüüd eemaldage lüüs usaldusväärsest hulgast. Milliseid sihtkohti saab 10.60.4.10 saavutada, kui selle protsess kuulub ründajale? URL-filter, mis külastajaid piiras, ei ütle midagi ühenduse kohta, mille lüüsi host andmebaasi alavõrgu suunas avab.
Eemaldage selle asemel rakendusprotsess ja volitused muudavad kuju: roll expenses_app, teenused, mida see server saab saavutada, ja failid, mida see konto saab lugeda. Mõlemal juhul võib esiuks jääda ainult veebiks, samal ajal kui tagarakenduse piir puudub. Seega ei ole esiukse silt vastus kummalelegi kahest küsimusest.
Kaardistage volitused, mis igal osapoolel tegelikult on
Kavatsetud lubadustena kirjutatud leping kipub teile kujundust kordama. Kirjutage see omatud volitusena, kontrollina, mis ülejäägi ümber lükkab, ja selle kontrolli omanikuna, siis muutub iga rida testitavaks. See tabel on ülaltoodud näite ettepanek, mitte tooteväide:
| 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 |
Omand kuulub volitusele. Identiteedimeeskond omab väiteid, võrguplatvormi meeskond omab marsruute, rakendusmeeskond omab andmebaasi rolli, andmebaasi administraator omab kuulajat ja selle hostipõhiseid reegleid ning platvormi omanik omab haldustasandit. Omanikuta keeldumine on lause dokumendis, mitte kontroll.
Jagamine hoiab ära ka topeltarvestuse. Pordipiirang ei saa väljendada tabeliõigust ja andmebaasi roll ei saa takistada hosti avamast soklit seostamata alavõrku.
Loetlege, mida lüüs saab saavutada, selle asemel et seda väita
Piiriväide on ainult nii hea kui selle taga olev loetelu. Lüüsi hostis katavad kolm käsku marsruudi valiku, reaalajas sondi ja väljundpoliitika:
ip route get 10.60.4.20
nc -zv 10.60.4.20 5432
sudo nft list chain inet filter outputLugege väljundit selles järjekorras. Marsruut ütleb, kas 10.60.4.20 üldse sellest hostist valitakse; sond ütleb, kas kuulaja vastab; reeglite loend näitab, kas poliitika peatab paketi või ei olnud selle teel kunagi midagi.
Korrake loetelu rakenduse hostist. Sealt on andmebaasi pool üks päring, mis käivitatakse rakenduse rollina:
psql -h 10.60.4.20 -U expenses_app -d expenses -c 'select rolname, rolsuper, rolcreatedb from pg_roles'Edukas ühendus rolli all, mis ei saa teist skeemi lugeda, on teine tulemus kui edukas ühendus omaniku rolli all. Ainult teine on leid.
Registreerige keeldumised, seejärel dateerige ülevaatus
Vastuvõtt kirjutatakse tulemustena, mitte kavatsustena: töötaja sessioon ei saa kuulajani jõuda, lüüsi host ei saa seostamata alavõrku jõuda ja rakenduse roll ei saa andmebaasi luua. Igaüks on eraldi kontroll, millel on nimetatud omanik ja kuupäev.
Hoidke jälgimine, paikamine ja taastamine kättesaadavana nende jaoks kavandatud haldustee kaudu. Piir, mis blokeerib ka oma omanikku, muutub katkestuseks ja selle katkestuse tavaline esimene vastus on reeglit uuesti laiendada. CISA perimeetri juhised nõuavad sissetuleva ja väljuva juurdepääsu piiramist põhjendatud portide ja protokollidega, sealhulgas liiklus sisemiste võrkude vahel, mis on tagarakenduse algatatud suund, mille enamik diagramme välja jätab.
Dateerige ülevaatus ja nimetage selle omanik. Käivitage loetelu ja õiguste päring uuesti pärast mis tahes muudatust lüüsi kujutises, marsruutimistabelis või rakenduse rollis.