Apa lagi yang masih bisa dijangkau gateway web yang disusupi?
Gateway web membatasi apa yang dibuka pengunjung, bukan apa yang bisa dihubungi host yang disusupi. Dua tinjauan, tabel otoritas, dan perintah pengukuran jangkauan.
Misalkan host gateway disusupi sementara sertifikatnya masih berlaku. Setiap aturan yang mengatur halaman mana yang boleh diminta pengunjung tetap berlaku, dan tidak satu pun aturan itu membatasi koneksi yang kini dibuka penyerang dari host tersebut menuju subnet basis data. Celah itulah sebabnya titik masuk khusus web bukan klaim yang sama dengan jaringan tersegmentasi. Kedua klaim memerlukan tinjauan terpisah, dari titik awal yang berbeda, sebelum salah satunya dapat dibuat dengan jujur.
Dua klaim, dan hanya satu yang dimulai dari pengunjung
Klaim pertama tentang seseorang: pengunjung dengan peramban dan sesi yang valid dapat membuka satu aplikasi dan tidak yang lain. Titik masuk khusus web menjawab klaim itu dengan baik, karena pengunjung menerima halaman, bukan rute. Jawaban itu layak dipertahankan, dan itu juga satu-satunya klaim yang dicatat sebagian besar diagram.
Klaim kedua tentang sebuah komponen: gateway, atau proses aplikasi di belakangnya, dianggap berada di bawah kendali orang lain. Dari anggapan itu pertanyaannya berubah dari URL mana yang diizinkan menjadi tujuan dan identitas mana yang masih dapat dijangkau proses tersebut.
Kedua klaim memiliki pemilik berbeda, menghasilkan bukti berbeda, dan gagal secara mandiri. Tim identitas dapat menunjukkan klaim pertama dengan uji sesi; klaim kedua membutuhkan kebijakan jaringan, tinjauan akun layanan, dan kontrol host. Desain yang hanya mencatat separuh pengunjung tampak lengkap di slide tinjauan dan tipis saat insiden, karena kontrol yang penting setelah penyusupan tidak pernah masuk cakupan. Sebutkan klaim mana yang didukung setiap kontrol, atau satu aturan gateway akan dikreditkan untuk keduanya.
Layanan biaya yang dikerjakan, dan dua cara ia kalah
Ambil layanan biaya: gateway publik di 10.60.4.10 mengautentikasi staf dan meneruskan permintaan yang disetujui ke pendengar aplikasi pada port 8443, dan aplikasi itu menjangkau satu pendengar PostgreSQL di 10.60.4.20:5432 sebagai peran expenses_app. Karyawan tidak dimaksudkan menerima akses internal umum. Dalam operasi normal desain memang memberikan pintu masuk khusus aplikasi tanpa mempublikasikan pendengar basis data di mana pun. Alamatnya penting, karena setiap pemeriksaan selanjutnya dalam artikel ini menyebutnya.
Sekarang keluarkan gateway dari himpunan tepercaya. Tujuan mana yang dapat dijangkau 10.60.4.10 setelah prosesnya dimiliki penyerang? Filter URL yang membatasi pengunjung tidak mengatakan apa pun tentang koneksi yang dibuka host gateway menuju subnet basis data.
Keluarkan proses aplikasinya, dan otoritas berubah bentuk: peran expenses_app, layanan yang dapat dijangkau server itu, dan berkas yang dapat dibaca akun itu. Dalam kedua kasus pintu depan dapat tetap khusus web sementara batas backend tidak ada. Karena itu label di pintu depan bukan jawaban atas salah satu dari dua pertanyaan.
Petakan otoritas yang sebenarnya dipegang setiap pihak
Kontrak yang ditulis sebagai izin yang dimaksudkan cenderung mengulang desain kepada Anda. Tuliskan sebagai otoritas yang dipegang, pemeriksaan yang menyangkal kelebihan, dan pemilik pemeriksaan itu, maka setiap baris menjadi dapat diuji. Tabel ini adalah usulan untuk contoh di atas, bukan klaim produk:
| 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 |
Kepemilikan mengikuti otoritas. Tim identitas memiliki asersi, tim platform jaringan memiliki jalur, tim aplikasi memiliki peran basis data, administrator basis data memiliki pendengar dan aturan berbasis host-nya, dan pemilik platform memiliki bidang manajemen. Penolakan tanpa pemilik adalah kalimat dalam dokumen, bukan kontrol.
Pemisahan itu juga mencegah penghitungan ganda. Pembatasan port tidak dapat menyatakan hak istimewa tabel, dan peran basis data tidak dapat mencegah host membuka soket ke subnet yang tidak terkait.
Hitung apa yang dapat dijangkau gateway alih-alih mengklaimnya
Klaim batas hanya sebaik penghitungan di belakangnya. Pada host gateway, tiga perintah mencakup pemilihan rute, uji langsung, dan kebijakan keluar:
ip route get 10.60.4.20
nc -zv 10.60.4.20 5432
sudo nft list chain inet filter outputBaca keluaran dalam urutan itu. Rute mengatakan apakah 10.60.4.20 bahkan dipilih dari host itu; uji mengatakan apakah pendengar menjawab; daftar aturan menunjukkan apakah kebijakan menghentikan paket atau tidak pernah ada apa pun di jalurnya.
Ulangi penghitungan dari host aplikasi. Dari sana sisi basis data adalah satu kueri yang dijalankan sebagai peran aplikasi:
psql -h 10.60.4.20 -U expenses_app -d expenses -c 'select rolname, rolsuper, rolcreatedb from pg_roles'Koneksi berhasil di bawah peran yang tidak dapat membaca skema lain adalah hasil berbeda dari koneksi berhasil di bawah peran pemilik. Hanya yang kedua merupakan temuan.
Catat penolakan, lalu beri tanggal tinjauan
Penerimaan ditulis sebagai hasil, bukan niat: sesi karyawan tidak dapat menjangkau pendengar, host gateway tidak dapat menjangkau subnet yang tidak terkait, dan peran aplikasi tidak dapat membuat basis data. Masing-masing adalah pemeriksaan terpisah dengan pemilik bernama dan tanggal.
Jaga pemantauan, penambalan, dan pemulihan tetap terjangkau melalui jalur manajemen yang dirancang untuknya. Batas yang juga memblokir pemiliknya menjadi gangguan, dan respons pertama yang biasa terhadap gangguan itu adalah memperlebar aturan lagi. Panduan perimeter CISA meminta akses masuk dan keluar dibatasi pada port dan protokol yang dibenarkan, termasuk lalu lintas antarjaringan internal, yaitu arah yang dimulai backend yang dilewatkan sebagian besar diagram.
Beri tanggal tinjauan dan sebutkan pemiliknya. Jalankan kembali penghitungan dan kueri hak istimewa setelah setiap perubahan pada image gateway, tabel rute, atau peran aplikasi.