คำศัพท์ด้านความปลอดภัยของ Xygeni
คำศัพท์ด้านความปลอดภัยในการพัฒนาและส่งมอบซอฟต์แวร์

LDAP Injection คืออะไร?

คุณรู้หรือไม่ว่า LDAP injection คืออะไร? มันคือเทคนิคการแทรกโค้ดที่มุ่งเป้าไปที่แอปพลิเคชันที่สร้างคำสั่งแทรกโดยใช้ข้อมูลที่ผู้ใช้ป้อนเข้ามาโดยไม่ผ่านการตรวจสอบ LDAP (Lightweight Directory Access Protocol) มักใช้สำหรับการค้นหาในไดเร็กทอรี เช่น การตรวจสอบสิทธิ์ผู้ใช้หรือการดึงข้อมูลขององค์กร เมื่อผู้โจมตีป้อนข้อมูลที่สร้างขึ้นเป็นพิเศษซึ่งมีอักขระพิเศษของ LDAP พวกเขาสามารถแก้ไขตรรกะของคำสั่งค้นหาในไดเร็กทอรีเพื่อเข้าถึงหรือเปลี่ยนแปลงข้อมูลอย่างไม่เหมาะสมได้ กล่าวโดยสรุป ช่องโหว่ LDAP injection เกิดขึ้นเมื่อมีการสร้างตัวกรองแบบไดนามิกจากค่าที่ผู้ใช้ควบคุมโดยไม่มีการตรวจสอบหรือยืนยันความถูกต้องของข้อมูลที่ป้อนเข้ามา

วิธีการทำงาน: กลไกของการโจมตีแบบ LDAP Injection #

การโจมตีแบบ LDAP injection เกิดขึ้นเมื่อข้อมูลที่ผู้ใช้ป้อนถูกนำไปรวมเข้ากับการสืบค้นข้อมูลใน LDAP อย่างไม่ปลอดภัย ลองพิจารณากรณีต่อไปนี้ login กรอง:

(&(cn=” + username + “)(userPassword=” + password + “))

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

ดังนั้น ช่องโหว่การโจมตีแบบ LDAP injection เกิดจากการสร้างคำสั่งค้นหาโดยใช้ข้อมูลที่ไม่น่าเชื่อถือ ซึ่งรวมถึงอักขระพิเศษ เช่น วงเล็บ เครื่องหมายอัญประกาศ และสัญลักษณ์ตัวแทน (wildcards) ที่เปลี่ยนแปลงความหมายของคำสั่งค้นหา

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

เหตุใดการโจมตีแบบ LDAP Injection จึงมีความสำคัญ? #

การโจมตีแบบ LDAP injection สามารถขัดขวางการตรวจสอบสิทธิ์ รั่วไหลข้อมูลสำคัญ หรือแม้กระทั่งแก้ไขโครงสร้างไดเร็กทอรีได้ Imperva ชี้ให้เห็นว่าผู้โจมตีสามารถบุกรุกกระบวนการตรวจสอบสิทธิ์ ดูหรือแก้ไขชื่อผู้ใช้/รหัสผ่าน ติดตั้งมัลแวร์ และยกระดับสิทธิ์ ส่งผลให้เกิดการรั่วไหลของข้อมูล ความเสียหายต่อชื่อเสียง และความสูญเสียทางการเงิน

ช่องโหว่การโจมตีแบบ LDAP injection อาจส่งผลกระทบต่อเนื่องไปยังบริการที่เชื่อมต่อกัน โดยเฉพาะอย่างยิ่งใน enterprise สภาพแวดล้อมที่ใช้ LDAP สำหรับการเข้าสู่ระบบครั้งเดียว (SSO) การอนุญาต หรือการประสานงานข้อมูลประจำตัวและสิทธิ์ของผู้ใช้

สัญญาณบ่งชี้ช่องโหว่การโจมตีแบบ LDAP Injection ที่มีอยู่ #

ในด้านความปลอดภัยทางไซเบอร์ การกำกับดูแลหมายถึงวิธีการที่ผู้นำ นโยบาย และสัญญาณเตือนที่สำคัญ:

  • โค้ดนี้จะนำข้อมูลที่ผู้ใช้ป้อนเข้ามาไปรวมเข้ากับตัวกรอง LDAP โดยตรง
  • ขาดการตรวจสอบความถูกต้องของข้อมูลป้อนเข้าหรือการหลีกเลี่ยงข้อผิดพลาด
  • สามารถใช้ตัวอักษรพิเศษ เช่น () * และ | = ในการป้อนข้อมูลได้โดยไม่มีข้อจำกัด
  • ผลลัพธ์การค้นหาที่ไม่คาดฝัน เช่น การตรวจสอบสิทธิ์สำเร็จโดยไม่คำนึงถึงข้อมูลประจำตัว หรือการแสดงรายชื่อผู้ใช้จำนวนมากโดยใช้ข้อมูลป้อนเข้าเพียงเล็กน้อย

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

จะลดผลกระทบเหล่านี้ได้อย่างไร? #

การลดความเสี่ยงจากการโจมตีแบบ LDAP injection ประกอบด้วย:

ก. การตรวจสอบความถูกต้องของข้อมูลขาเข้า / รายชื่อข้อมูลที่อนุญาต

ยอมรับเฉพาะอักขระหรือรูปแบบที่ปลอดภัยที่รู้จักเท่านั้น ปฏิเสธหรือกรองอักขระควบคุม เช่น *, (, ), &, |, = PortsWigger แนะนำให้บล็อกอินพุตที่มีอักขระพิเศษของ LDAP หรือบังคับใช้รูปแบบตัวอักษรและตัวเลขที่เข้มงวด

ข. การหลีกเลี่ยง/การเข้ารหัส

ใช้ฟังก์ชันการหลีกเลี่ยงอักขระเฉพาะของ LDAP: การหลีกเลี่ยงอักขระชื่อที่ระบุ (Distinguished Name) สำหรับบริบท DN และการหลีกเลี่ยงอักขระตัวกรองการค้นหาสำหรับเงื่อนไขการค้นหา OWASP มีรายละเอียดเพิ่มเติม คู่มือฉบับย่อสำหรับการป้องกัน พร้อมคำแนะนำที่เหมาะสม

ค. การสืบค้นข้อมูลแบบมีพารามิเตอร์ / API ที่ปลอดภัย

หลีกเลี่ยงการสร้างตัวกรองโดยการต่อสตริง ใช้ไลบรารี LDAP ที่รองรับการผูกพารามิเตอร์หรือ API การสร้างตัวกรอง (เช่น Filter.createANDFilter(…) ของ UnboundID SDK) เพื่อให้แน่ใจว่าข้อมูลที่ผู้ใช้ป้อนเข้ามานั้นถือเป็นข้อมูล ไม่ใช่ไวยากรณ์

ง. หลักการสิทธิพิเศษน้อยที่สุด (PoLP)

ผูก LDAP ด้วยสิทธิ์การเข้าถึงขั้นต่ำ แม้ว่าจะเกิดการโจมตีแบบ Injection ก็ยังจำกัดการกระทำที่ผู้โจมตีสามารถทำได้ เน้นย้ำ PoLP เมื่อรวมกับ ความไว้วางใจเป็นศูนย์ และใช้ MFA เพื่อจำกัดผลกระทบ

e. เฟรมเวิร์ก/ไลบรารีที่ปลอดภัย

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

ฉ. เครื่องมือวิเคราะห์โค้ด

ใน .NET ให้ใช้การวิเคราะห์ CA3005 เพื่อตรวจจับอินพุต HTTP ที่ไม่น่าเชื่อถือที่ส่งไปยังคำสั่ง LDAP แก้ไขโดยการกรองข้อมูล การหลีกเลี่ยงอักขระพิเศษ หรือการอนุญาตรายการอินพุต

g. การทดสอบ (แบบคงที่ แบบไดนามิก การทดสอบเจาะระบบ)

ผสานรวมทั้ง Static AppSec (SAST) และไดนามิก (Dast) การสแกนเพื่อตรวจจับช่องโหว่การโจมตีแบบ Injection บน LDAP ทั้งในขณะที่ระบบหยุดทำงานและขณะทำงาน

ง. การบันทึกข้อมูล การตรวจสอบ การแจ้งเตือน

ตรวจจับรูปแบบการกรองที่ผิดปกติ ความพยายามที่ล้มเหลว หรือโครงสร้างการสืบค้นที่ไม่คาดคิด Semperis แนะนำให้ตรวจสอบ Active Directory เพื่อตรวจหาการสืบค้น LDAP ที่ผิดปกติหรือการเปลี่ยนแปลงข้อมูลเมตา

ตารางสรุปคำศัพท์ #

เทอมความหมาย
การฉีด LDAPเทคนิคการแทรกโค้ดโดยใช้ประโยชน์จากข้อมูลที่ผู้ใช้ป้อนเข้ามาโดยไม่ผ่านการตรวจสอบในตัวกรอง LDAP
LDAP Injection คืออะไรช่องโหว่ที่เกิดจากการสร้างคำสั่งค้นหา LDAP ด้วยข้อมูลป้อนเข้าที่ไม่น่าเชื่อถือ
การโจมตีแบบฉีด LDAPการโจมตีที่เกิดขึ้นจริงคือการที่ข้อมูลป้อนเข้าเปลี่ยนแปลงตรรกะการสืบค้น LDAP หรือทำให้สามารถเข้าถึงระบบได้
ช่องโหว่การโจมตีแบบ LDAP Injectionช่องโหว่ระดับโค้ดทำให้เกิดการโจมตีแบบ LDAP injection ได้

เหตุใดเรื่องนี้จึงสำคัญใน DevSecOps? #

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

การเสริมสร้างความแข็งแกร่งให้กับ DevSecOps Pipelines กับ Xygeni #

เมื่อคุณเข้าใจแล้วว่าการโจมตีแบบ LDAP injection คืออะไร คุณก็จะรู้ว่าการรักษาความปลอดภัยของแอปพลิเคชันสมัยใหม่จากการโจมตีแบบนี้ต้องมากกว่าแค่การแก้ไขโค้ด ทีม DevSecOps ต้องบังคับใช้มาตรการรักษาความปลอดภัยทั่วทั้งระบบ วงจรชีวิตการพัฒนาซอฟต์แวร์, ตั้งแต่การเขียนโค้ด การสร้าง ไปจนถึงการใช้งานจริง

เครื่องมือที่ชอบ ไซเกนี ช่วยให้ทีมตรวจจับความเสี่ยงจากการฉีดข้อมูลได้ตั้งแต่เนิ่นๆ โดยการบูรณาการการวิเคราะห์แบบคงที่ IaC การสแกนและการบังคับใช้นโยบายความปลอดภัยโดยตรง CI/CD Xygeni ช่วยป้องกันการโจมตีแบบ LDAP injection ก่อนที่จะเกิดขึ้นจริง โดยการตรวจสอบอย่างต่อเนื่องเพื่อหาโครงสร้างคำสั่งค้นหาที่ไม่ปลอดภัย ความเสี่ยงด้านการพึ่งพา หรือการตั้งค่าที่ไม่ถูกต้อง

การผสานรวมแพลตฟอร์มต่างๆ เช่น Xygeni ช่วยให้การรักษาความปลอดภัยสอดคล้องกับความเร็วในการพัฒนา โดยให้การมองเห็นแบบเรียลไทม์ การควบคุมอัตโนมัติ และคำแนะนำในการแก้ไขปัญหาที่ปรับให้เหมาะสมกับการออกแบบทางวิศวกรรมที่เน้นความปลอดภัยตั้งแต่เริ่มต้น

ภาพรวมชุดผลิตภัณฑ์ Xygeni

เริ่มฟรี

เริ่มต้นใช้งานฟรี
ไม่ต้องใช้บัตรเครดิต

เริ่มต้นได้ง่ายๆ เพียงคลิกเดียว:

ข้อมูลนี้จะถูกจัดเก็บอย่างปลอดภัยตามข้อกำหนด ข้อกำหนดในการให้บริการ และ ความเป็นส่วนตัว

ภาพหน้าจอแอป