เกตเวย์เว็บที่ถูกเจาะยังเข้าถึงอะไรได้อีก
เกตเวย์เว็บจำกัดสิ่งที่ผู้เยี่ยมชมเปิด ไม่ใช่สิ่งที่โฮสต์ที่ถูกเจาะเชื่อมต่อได้ สองการทบทวน ตารางอำนาจ และคำสั่งวัดการเข้าถึง
สมมติว่าโฮสต์ของเกตเวย์ถูกเจาะในขณะที่ใบรับรองยังใช้ได้อยู่ กฎทุกข้อที่กำหนดว่าผู้เยี่ยมชมขอหน้าใดได้ยังมีผลบังคับใช้ และไม่มีกฎใดในนั้นจำกัดการเชื่อมต่อที่ผู้โจมตีเปิดจากโฮสต์นั้นไปยังซับเน็ตของฐานข้อมูล ช่องว่างนี้เองคือเหตุผลที่จุดเข้าถึงแบบเว็บล้วนไม่ใช่ข้อกล่าวอ้างเดียวกับเครือข่ายที่แบ่งส่วน ข้อกล่าวอ้างทั้งสองต้องมีการทบทวนแยกกัน จากจุดเริ่มต้นที่ต่างกัน ก่อนจะกล่าวอ้างใดได้อย่างซื่อสัตย์
สองข้อกล่าวอ้าง และมีเพียงข้อเดียวที่เริ่มที่ผู้เยี่ยมชม
ข้อกล่าวอ้างแรกเกี่ยวกับบุคคล ผู้เยี่ยมชมที่มีเบราว์เซอร์และเซสชันที่ใช้ได้สามารถเปิดแอปพลิเคชันหนึ่งและไม่มีอะไรอื่น จุดเข้าถึงแบบเว็บล้วนตอบข้อกล่าวอ้างนี้ได้ดี เพราะผู้เยี่ยมชมได้รับหน้าเว็บไม่ใช่เส้นทาง คำตอบนั้นคุ้มค่าที่จะเก็บไว้ และยังเป็นข้อกล่าวอ้างเดียวที่แผนภาพส่วนใหญ่บันทึกไว้
ข้อกล่าวอ้างที่สองเกี่ยวกับองค์ประกอบหนึ่ง สมมติว่าเกตเวย์หรือกระบวนการแอปพลิเคชันที่อยู่เบื้องหลังอยู่ภายใต้การควบคุมของคนอื่น จากสมมติฐานนี้ คำถามเปลี่ยนจาก URL ใดได้รับอนุญาตเป็นกระบวนการยังเข้าถึงปลายทางและอัตลักษณ์ใดได้
ข้อกล่าวอ้างทั้งสองมีเจ้าของต่างกัน ให้หลักฐานต่างกัน และล้มเหลวอย่างเป็นอิสระ ทีมข้อมูลระบุตัวตนสามารถแสดงข้อแรกด้วยการทดสอบเซสชัน ส่วนข้อที่สองต้องใช้นโยบายเครือข่าย การทบทวนบัญชีบริการ และการควบคุมโฮสต์ การออกแบบที่บันทึกเพียงครึ่งของผู้เยี่ยมชมดูสมบูรณ์บนสไลด์ทบทวนและบางเฉียบระหว่างเหตุการณ์ เพราะการควบคุมที่สำคัญหลังการถูกเจาะไม่เคยอยู่ในขอบเขตเลย ระบุว่าการควบคุมแต่ละอย่างสนับสนุนข้อกล่าวอ้างใด มิฉะนั้นกฎเกตเวย์ข้อหนึ่งจะถูกให้เครดิตกับทั้งสองข้อ
บริการค่าใช้จ่ายที่ลงมือทำ และสองวิธีที่มันแพ้
ลองใช้บริการค่าใช้จ่าย เกตเวย์สาธารณะที่ 10.60.4.10 ตรวจสอบสิทธิ์พนักงานและส่งต่อคำขอที่อนุมัติแล้วไปยังตัวรับฟังแอปพลิเคชันที่พอร์ต 8443 และแอปพลิเคชันนั้นเข้าถึงตัวรับฟัง PostgreSQL หนึ่งตัวที่ 10.60.4.20:5432 ในบทบาท expenses_app พนักงานไม่ควรได้รับสิทธิ์เข้าถึงภายในทั่วไป ในการทำงานปกติ การออกแบบให้ทางเข้าที่เฉพาะเจาะจงแอปพลิเคชันจริง โดยไม่เผยแพร่ตัวรับฟังฐานข้อมูลที่ใดเลย ที่อยู่สำคัญ เพราะทุกการตรวจสอบถัดไปในบทความนี้ระบุถึงที่อยู่เหล่านั้น
ตอนนี้เอาต์เกตเวย์ออกจากชุดที่เชื่อถือได้ 10.60.4.10 เข้าถึงปลายทางใดได้เมื่อกระบวนการเป็นของผู้โจมตี ตัวกรอง URL ที่จำกัดผู้เยี่ยมชมไม่ได้บอกอะไรเกี่ยวกับการเชื่อมต่อที่โฮสต์เกตเวย์เปิดไปยังซับเน็ตของฐานข้อมูล
ให้เอากระบวนการแอปพลิเคชันออกแทน แล้วอำนาจเปลี่ยนรูป บทบาท expenses_app บริการที่เซิร์ฟเวอร์นั้นเข้าถึงได้ และไฟล์ที่บัญชีนั้นอ่านได้ ในทั้งสองกรณีประตูหน้าอาจยังเป็นเว็บล้วนในขณะที่ขอบเขตแบ็กเอนด์หายไป ดังนั้นป้ายบนประตูหน้าจึงไม่ใช่คำตอบของคำถามทั้งสองข้อ
จัดทำแผนที่อำนาจที่แต่ละฝ่ายถืออยู่จริง
สัญญาที่เขียนเป็นสิทธิ์ที่ตั้งใจไว้มักจะทวนการออกแบบกลับมาให้คุณ เขียนมันเป็นอำนาจที่ถือครอง การตรวจสอบที่หักล้างส่วนเกิน และเจ้าของการตรวจสอบนั้น แล้วทุกแถวจะทดสอบได้ ตารางนี้เป็นข้อเสนอสำหรับตัวอย่างข้างต้น ไม่ใช่ข้อกล่าวอ้างผลิตภัณฑ์
| 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 |
ความเป็นเจ้าของเป็นไปตามอำนาจ ทีมข้อมูลระบุตัวตนเป็นเจ้าของข้อกล่าวอ้าง ทีมแพลตฟอร์มเครือข่ายเป็นเจ้าของเส้นทาง ทีมแอปพลิเคชันเป็นเจ้าของบทบาทฐานข้อมูล ผู้ดูแลฐานข้อมูลเป็นเจ้าของตัวรับฟังและกฎที่อิงโฮสต์ของมัน และเจ้าของแพลตฟอร์มเป็นเจ้าของระนาบการจัดการ การปฏิเสธที่ไม่มีเจ้าของคือประโยคในเอกสาร ไม่ใช่การควบคุม
การแยกยังป้องกันการนับซ้ำ การจำกัดพอร์ตไม่สามารถแสดงสิทธิพิเศษของตารางได้ และบทบาทฐานข้อมูลไม่สามารถหยุดโฮสต์ไม่ให้เปิดซ็อกเก็ตไปยังซับเน็ตที่ไม่เกี่ยวข้องได้
นับสิ่งที่เกตเวย์เข้าถึงได้แทนการกล่าวอ้าง
ข้อกล่าวอ้างเรื่องขอบเขตมีค่าเท่ากับการนับที่อยู่เบื้องหลัง บนโฮสต์เกตเวย์ คำสั่งสามข้อครอบคลุมการเลือกเส้นทาง การตรวจสอบสด และนโยบายขาออก
ip route get 10.60.4.20
nc -zv 10.60.4.20 5432
sudo nft list chain inet filter outputอ่านผลลัพธ์ตามลำดับนั้น เส้นทางบอกว่า 10.60.4.20 ถูกเลือกจากโฮสต์นั้นหรือไม่ การตรวจสอบบอกว่าตัวรับฟังตอบหรือไม่ รายการกฎแสดงว่านโยบายหยุดแพ็กเก็ตหรือไม่ หรือไม่มีอะไรอยู่บนเส้นทางของมันเลย
ทำการนับซ้ำจากโฮสต์แอปพลิเคชัน จากที่นั่นฝั่งฐานข้อมูลคือคำสั่งค้นหาหนึ่งรายการที่รันในบทบาทแอปพลิเคชัน
psql -h 10.60.4.20 -U expenses_app -d expenses -c 'select rolname, rolsuper, rolcreatedb from pg_roles'การเชื่อมต่อที่สำเร็จภายใต้บทบาทที่ไม่สามารถอ่านสคีมาอื่นได้เป็นผลลัพธ์ที่ต่างจากการเชื่อมต่อที่สำเร็จภายใต้บทบาทเจ้าของ มีเพียงอย่างที่สองเท่านั้นที่เป็นข้อค้นพบ
บันทึกการปฏิเสธ แล้วลงวันที่ทบทวน
การยอมรับเขียนเป็นผลลัพธ์ไม่ใช่เจตนา เซสชันพนักงานเข้าถึงตัวรับฟังไม่ได้ โฮสต์เกตเวย์เข้าถึงซับเน็ตที่ไม่เกี่ยวข้องไม่ได้ และบทบาทแอปพลิเคชันสร้างฐานข้อมูลไม่ได้ แต่ละอย่างเป็นการตรวจสอบแยกกันที่มีเจ้าของระบุชื่อและวันที่
ทำให้การเฝ้าระวัง การแพตช์ และการกู้คืนเข้าถึงได้ผ่านเส้นทางการจัดการที่ออกแบบไว้สำหรับสิ่งเหล่านั้น ขอบเขตที่บล็อกเจ้าของของตัวเองด้วยจะกลายเป็นการหยุดชะงัก และการตอบสนองแรกตามปกติต่อการหยุดชะงักนั้นคือการขยายกฎอีกครั้ง แนวทางขอบเขตของ CISA ขอให้จำกัดการเข้าถึงขาเข้าและขาออกไว้ที่พอร์ตและโปรโตคอลที่สมเหตุสมผล รวมถึงการรับส่งระหว่างเครือข่ายภายใน ซึ่งเป็นทิศทางที่เริ่มจากแบ็กเอนด์และแผนภาพส่วนใหญ่มักละไว้
ลงวันที่ทบทวนและระบุเจ้าของ เรียกการนับและคำสั่งค้นหาสิทธิพิเศษอีกครั้งหลังจากมีการเปลี่ยนแปลงใด ๆ กับอิมเมจเกตเวย์ ตารางเส้นทาง หรือบทบาทแอปพลิเคชัน