สมมติว่าโฮสต์ของเกตเวย์ถูกเจาะในขณะที่ใบรับรองยังใช้ได้อยู่ กฎทุกข้อที่กำหนดว่าผู้เยี่ยมชมขอหน้าใดได้ยังมีผลบังคับใช้ และไม่มีกฎใดในนั้นจำกัดการเชื่อมต่อที่ผู้โจมตีเปิดจากโฮสต์นั้นไปยังซับเน็ตของฐานข้อมูล ช่องว่างนี้เองคือเหตุผลที่จุดเข้าถึงแบบเว็บล้วนไม่ใช่ข้อกล่าวอ้างเดียวกับเครือข่ายที่แบ่งส่วน ข้อกล่าวอ้างทั้งสองต้องมีการทบทวนแยกกัน จากจุดเริ่มต้นที่ต่างกัน ก่อนจะกล่าวอ้างใดได้อย่างซื่อสัตย์

สองข้อกล่าวอ้าง และมีเพียงข้อเดียวที่เริ่มที่ผู้เยี่ยมชม

ข้อกล่าวอ้างแรกเกี่ยวกับบุคคล ผู้เยี่ยมชมที่มีเบราว์เซอร์และเซสชันที่ใช้ได้สามารถเปิดแอปพลิเคชันหนึ่งและไม่มีอะไรอื่น จุดเข้าถึงแบบเว็บล้วนตอบข้อกล่าวอ้างนี้ได้ดี เพราะผู้เยี่ยมชมได้รับหน้าเว็บไม่ใช่เส้นทาง คำตอบนั้นคุ้มค่าที่จะเก็บไว้ และยังเป็นข้อกล่าวอ้างเดียวที่แผนภาพส่วนใหญ่บันทึกไว้

ข้อกล่าวอ้างที่สองเกี่ยวกับองค์ประกอบหนึ่ง สมมติว่าเกตเวย์หรือกระบวนการแอปพลิเคชันที่อยู่เบื้องหลังอยู่ภายใต้การควบคุมของคนอื่น จากสมมติฐานนี้ คำถามเปลี่ยนจาก URL ใดได้รับอนุญาตเป็นกระบวนการยังเข้าถึงปลายทางและอัตลักษณ์ใดได้

ข้อกล่าวอ้างทั้งสองมีเจ้าของต่างกัน ให้หลักฐานต่างกัน และล้มเหลวอย่างเป็นอิสระ ทีมข้อมูลระบุตัวตนสามารถแสดงข้อแรกด้วยการทดสอบเซสชัน ส่วนข้อที่สองต้องใช้นโยบายเครือข่าย การทบทวนบัญชีบริการ และการควบคุมโฮสต์ การออกแบบที่บันทึกเพียงครึ่งของผู้เยี่ยมชมดูสมบูรณ์บนสไลด์ทบทวนและบางเฉียบระหว่างเหตุการณ์ เพราะการควบคุมที่สำคัญหลังการถูกเจาะไม่เคยอยู่ในขอบเขตเลย ระบุว่าการควบคุมแต่ละอย่างสนับสนุนข้อกล่าวอ้างใด มิฉะนั้นกฎเกตเวย์ข้อหนึ่งจะถูกให้เครดิตกับทั้งสองข้อ

บริการค่าใช้จ่ายที่ลงมือทำ และสองวิธีที่มันแพ้

ลองใช้บริการค่าใช้จ่าย เกตเวย์สาธารณะที่ 10.60.4.10 ตรวจสอบสิทธิ์พนักงานและส่งต่อคำขอที่อนุมัติแล้วไปยังตัวรับฟังแอปพลิเคชันที่พอร์ต 8443 และแอปพลิเคชันนั้นเข้าถึงตัวรับฟัง PostgreSQL หนึ่งตัวที่ 10.60.4.20:5432 ในบทบาท expenses_app พนักงานไม่ควรได้รับสิทธิ์เข้าถึงภายในทั่วไป ในการทำงานปกติ การออกแบบให้ทางเข้าที่เฉพาะเจาะจงแอปพลิเคชันจริง โดยไม่เผยแพร่ตัวรับฟังฐานข้อมูลที่ใดเลย ที่อยู่สำคัญ เพราะทุกการตรวจสอบถัดไปในบทความนี้ระบุถึงที่อยู่เหล่านั้น

ตอนนี้เอาต์เกตเวย์ออกจากชุดที่เชื่อถือได้ 10.60.4.10 เข้าถึงปลายทางใดได้เมื่อกระบวนการเป็นของผู้โจมตี ตัวกรอง URL ที่จำกัดผู้เยี่ยมชมไม่ได้บอกอะไรเกี่ยวกับการเชื่อมต่อที่โฮสต์เกตเวย์เปิดไปยังซับเน็ตของฐานข้อมูล

ให้เอากระบวนการแอปพลิเคชันออกแทน แล้วอำนาจเปลี่ยนรูป บทบาท expenses_app บริการที่เซิร์ฟเวอร์นั้นเข้าถึงได้ และไฟล์ที่บัญชีนั้นอ่านได้ ในทั้งสองกรณีประตูหน้าอาจยังเป็นเว็บล้วนในขณะที่ขอบเขตแบ็กเอนด์หายไป ดังนั้นป้ายบนประตูหน้าจึงไม่ใช่คำตอบของคำถามทั้งสองข้อ

จัดทำแผนที่อำนาจที่แต่ละฝ่ายถืออยู่จริง

สัญญาที่เขียนเป็นสิทธิ์ที่ตั้งใจไว้มักจะทวนการออกแบบกลับมาให้คุณ เขียนมันเป็นอำนาจที่ถือครอง การตรวจสอบที่หักล้างส่วนเกิน และเจ้าของการตรวจสอบนั้น แล้วทุกแถวจะทดสอบได้ ตารางนี้เป็นข้อเสนอสำหรับตัวอย่างข้างต้น ไม่ใช่ข้อกล่าวอ้างผลิตภัณฑ์

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

ความเป็นเจ้าของเป็นไปตามอำนาจ ทีมข้อมูลระบุตัวตนเป็นเจ้าของข้อกล่าวอ้าง ทีมแพลตฟอร์มเครือข่ายเป็นเจ้าของเส้นทาง ทีมแอปพลิเคชันเป็นเจ้าของบทบาทฐานข้อมูล ผู้ดูแลฐานข้อมูลเป็นเจ้าของตัวรับฟังและกฎที่อิงโฮสต์ของมัน และเจ้าของแพลตฟอร์มเป็นเจ้าของระนาบการจัดการ การปฏิเสธที่ไม่มีเจ้าของคือประโยคในเอกสาร ไม่ใช่การควบคุม

การแยกยังป้องกันการนับซ้ำ การจำกัดพอร์ตไม่สามารถแสดงสิทธิพิเศษของตารางได้ และบทบาทฐานข้อมูลไม่สามารถหยุดโฮสต์ไม่ให้เปิดซ็อกเก็ตไปยังซับเน็ตที่ไม่เกี่ยวข้องได้

นับสิ่งที่เกตเวย์เข้าถึงได้แทนการกล่าวอ้าง

ข้อกล่าวอ้างเรื่องขอบเขตมีค่าเท่ากับการนับที่อยู่เบื้องหลัง บนโฮสต์เกตเวย์ คำสั่งสามข้อครอบคลุมการเลือกเส้นทาง การตรวจสอบสด และนโยบายขาออก

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 ขอให้จำกัดการเข้าถึงขาเข้าและขาออกไว้ที่พอร์ตและโปรโตคอลที่สมเหตุสมผล รวมถึงการรับส่งระหว่างเครือข่ายภายใน ซึ่งเป็นทิศทางที่เริ่มจากแบ็กเอนด์และแผนภาพส่วนใหญ่มักละไว้

ลงวันที่ทบทวนและระบุเจ้าของ เรียกการนับและคำสั่งค้นหาสิทธิพิเศษอีกครั้งหลังจากมีการเปลี่ยนแปลงใด ๆ กับอิมเมจเกตเวย์ ตารางเส้นทาง หรือบทบาทแอปพลิเคชัน

บทความที่เกี่ยวข้อง