เครื่องมือสแกนความลับของ Betterleaks: โครงสร้างและกุญแจสำคัญ
การตรวจจับความลับในคลังเก็บโค้ดมีการเปลี่ยนแปลงอย่างมากในช่วงไม่กี่ปีที่ผ่านมา ก่อนหน้านี้ การมองหาข้อความหรือคีย์ที่น่าสงสัยซึ่งมีเอนโทรปีสูงในโค้ดก็เพียงพอแล้ว แต่ปัจจุบันสถานการณ์แตกต่างออกไป: คลังเก็บโค้ดมีขนาดใหญ่ขึ้น กระบวนการ CI/CD เร็วขึ้น และที่สำคัญที่สุดคือปริมาณโค้ดที่สร้างขึ้นโดยเครื่องมืออัตโนมัติหรือโมเดล AI เพิ่มมากขึ้น
สิ่งนี้ส่งผลในทางปฏิบัติ: ปัญหาไม่ได้อยู่ที่การค้นหาความลับอีกต่อไป แต่เป็นการแยกแยะสิ่งที่อันตรายอย่างแท้จริงออกจากสิ่งที่ดูเหมือนจะเป็นอันตราย ทีมงานหลายทีมพบว่าต้นทุนที่แท้จริงของเครื่องสแกนเหล่านี้ไม่ได้อยู่ที่การวิเคราะห์ข้อมูล แต่เป็นการตรวจสอบผลลัพธ์ที่ผิดพลาดหลายร้อยรายการ

สถาปัตยกรรมการตรวจจับ: อะไรเปลี่ยนแปลงไปบ้างเมื่อใช้ Betterleaks
Betterleaks ปรากฏขึ้นมาในบริบทนี้โดยเฉพาะ มันไม่ได้พยายามที่จะคิดค้นการสแกนข้อมูลลับขึ้นมาใหม่ทั้งหมด แต่เป็นการท้าทายสมมติฐานที่แพร่หลายอย่างหนึ่ง นั่นคือ การตรวจจับรูปแบบนั้นเพียงพอแล้ว
ในคลังข้อมูลสมัยใหม่หลายแห่งนั้นไม่เป็นเช่นนั้น
โครงการนี้พัฒนาโดย Zach Rice และได้รับการสนับสนุนจาก Aikido โดยนำเสนอแนวคิดที่แตกต่างออกไปเล็กน้อย แทนที่จะมุ่งเน้นเฉพาะการตรวจจับการจับคู่ โครงการนี้พยายามตรวจสอบว่าสิ่งที่ค้นพบนั้นสมเหตุสมผลหรือไม่ ก่อนที่จะแจ้งเตือนไปยังระดับที่สูงขึ้น
นี่อาจดูเหมือนเป็นรายละเอียดเล็กน้อย แต่กลับเปลี่ยนแปลงพลวัตในทีมขนาดใหญ่ได้อย่างมาก เมื่อระบบสแกนสร้างการแจ้งเตือนที่ไม่เกี่ยวข้องมากเกินไป ปฏิกิริยาตามธรรมชาติของทีมคือการเพิกเฉยต่อการแจ้งเตือนเหล่านั้น และในด้านความปลอดภัย การแจ้งเตือนที่ถูกเพิกเฉยอาจแย่กว่าการไม่มีการแจ้งเตือนเลยเสียอีก
เพื่อแก้ไขปัญหานี้ Betterleaks ได้นำเสนอเทคนิคที่น่าสนใจสองอย่าง ได้แก่ การตรวจสอบความถูกต้องโดยใช้ CEL (Common Expression Language) และตัวชี้วัดที่เรียกว่า "ประสิทธิภาพโทเค็น" ซึ่งอิงตามการสร้างโทเค็น BPE
แนวคิดก็คือ ไม่ใช่ทุกสิ่งที่ดูเหมือนจะเป็นความลับจะเป็นความลับจริงๆ สตริงที่มีเอนโทรปีสูงบางส่วนอาจเป็นเพียงแฮช ตัวระบุ หรือส่วนย่อยที่สร้างขึ้นโดยอัตโนมัติ เป้าหมายของระบบคือการลดสิ่งรบกวนเหล่านั้น
เอกสารโครงการกล่าวถึงการเปรียบเทียบที่แสดงให้เห็นว่าการแยกคำด้วย BPE ให้ผลลัพธ์อัตราการเรียกคืนข้อมูล (recall rate) 98.6% เมื่อเทียบกับ 70.4% ที่ได้จากการใช้เอนโทรปีในชุดข้อมูล CredData เช่นเดียวกับการวัดประสิทธิภาพอื่นๆ ตัวเลขเหล่านี้เป็นเพียงตัวบ่งชี้ ใช้เป็นจุดอ้างอิงได้ดี แต่ไม่สามารถทดแทนการทดสอบในคลังข้อมูลจริงได้

ที่มา: GitHub
ส่วนประกอบที่สร้างความแตกต่าง
การพิจารณาคุณลักษณะของโครงการเผยให้เห็นทิศทางที่ชัดเจน: เพื่ออำนวยความสะดวกในการนำไปใช้งานในสภาพแวดล้อมจริงโดยไม่เพิ่มความซับซ้อนทางเทคนิคมากเกินไป
องค์ประกอบที่โดดเด่นที่สุด ได้แก่:
- การตรวจสอบความถูกต้องตามกฎโดยใช้ CEL (Common Expression Language)
- การสแกนประสิทธิภาพโทเค็นโดยใช้การแบ่งโทเค็นแบบ BPE แทนเอนโทรปี ให้ผลลัพธ์ความแม่นยำ 98.6% เมื่อเทียบกับ 70.4% เมื่อใช้เอนโทรปีในชุดข้อมูล CredData
- เป็นการเขียนโปรแกรมด้วยภาษา Go ล้วนๆ (ไม่พึ่งพา CGO หรือ Hyperscan)
- การจัดการข้อมูลลับที่เข้ารหัสสองชั้น/สามชั้นโดยอัตโนมัติ
- ขยายชุดกฎสำหรับผู้ให้บริการมากขึ้น
- การสแกน Git แบบขนานเพื่อการวิเคราะห์ที่เก็บข้อมูลที่รวดเร็วยิ่งขึ้น
แม้ว่ารายการนี้อาจดูเหมือนเป็นเพียงการปรับปรุงทางเทคนิค แต่สิ่งที่น่าสนใจคือการเปลี่ยนแปลงเหล่านี้ส่งผลต่อการใช้งานในชีวิตประจำวันอย่างไร
ตัวอย่างเช่น การใช้งาน Go แบบเต็มรูปแบบโดยไม่มีการพึ่งพาไลบรารีภายนอกใดๆ จะช่วยลดความซับซ้อนในการผสานรวมเข้ากับไปป์ไลน์ CI/CD ได้อย่างมาก ในหลายๆ ทีม รายละเอียดเล็กๆ น้อยๆ เหล่านั้นเป็นตัวกำหนดว่าเครื่องมือชิ้นนั้นจะถูกนำไปใช้หรือถูกลืมไปในคลังเก็บโค้ด
การสร้างโทเค็นแบบ BPE ยังนำเสนอแนวทางที่แตกต่างออกไป แทนที่จะวัดเพียงแค่ความสุ่มของห่วงโซ่โทเค็น แต่จะวิเคราะห์รูปแบบโทเค็นที่สะท้อนให้เห็นถึงโครงสร้างของข้อมูลประจำตัวสมัยใหม่ได้ดียิ่งขึ้น
จะเกิดอะไรขึ้นเมื่อเครื่องสแกนตรวจพบบางสิ่ง?
เมื่อ Betterleaks ตรวจพบความลับที่อาจเกิดขึ้น กระบวนการก็ยังไม่จบลงเพียงแค่นั้น
ขั้นแรก ระบบจะประเมินบริบทโดยใช้กฎที่กำหนดไว้ใน CEL ซึ่งช่วยให้สามารถเพิ่มเงื่อนไขเพิ่มเติมได้ เช่น การตรวจสอบว่ารูปแบบตรงกับผู้ให้บริการที่คาดหวังหรือไม่ หรือการตัดทิ้งรูปแบบที่ปรากฏบ่อยในตัวอย่างหรือข้อมูลสมมติ
ขั้นตอนนี้อาจดูเหมือนเล็กน้อย แต่มีผลกระทบในทางปฏิบัติอย่างมาก การแจ้งเตือนผิดพลาดไม่เพียงแต่ทำให้เสียเวลา แต่ยังลดความเชื่อมั่นของทีมที่มีต่อระบบแจ้งเตือนอีกด้วย
อีกแง่มุมที่น่าสนใจคือการจัดการข้อมูลลับที่เข้ารหัสหลายครั้งโดยอัตโนมัติ ในบางแหล่งเก็บข้อมูล ข้อมูลประจำตัวจะปรากฏในรูปแบบที่แปลงแล้วโดยใช้ base64 หรือรูปแบบการเข้ารหัสอื่นๆ ซึ่งทำให้การตรวจจับทำได้ยากขึ้น
ถึงกระนั้น ก็ยังมีสิ่งหนึ่งที่ควรจดจำไว้ ซึ่งบางครั้งอาจถูกมองข้ามไป นั่นคือ ไม่มีเครื่องสแกนใดสามารถทดแทนการตรวจสอบโดยมนุษย์ได้อย่างสมบูรณ์ การตรวจพบความลับเป็นเพียงจุดเริ่มต้น การตัดสินใจว่าจะทำอย่างไรกับความลับนั้น (เพิกถอน หมุนเวียน เพิกเฉย หรือตรวจสอบ) ยังคงเป็นการตัดสินใจตามบริบท
การกำกับดูแลและแนวทางที่เน้นมนุษย์เป็นศูนย์กลาง/ปัญญาประดิษฐ์
เว็บไซต์ Betterleaks เผยแพร่ภายใต้ใบอนุญาต MIT และได้รับการสนับสนุนจากองค์กรภายนอก เช่น Royal Bank of Canada, Red Hat และ Amazon
โครงการนี้ยังพยายามปรับตัวให้เข้ากับความเป็นจริงที่ปรากฏให้เห็นมากขึ้นในคลังเก็บโค้ดสมัยใหม่ นั่นคือ การผสมผสานระหว่างโค้ดที่เขียนโดยนักพัฒนาและโค้ดที่สร้างขึ้นโดยเครื่องมืออัตโนมัติ
ในบริบทนี้ เครื่องมือดังกล่าวมีเป้าหมายที่จะทำงานได้ดีทั้งในขั้นตอนการทำงานที่ดำเนินการโดยมนุษย์และระบบอัตโนมัติที่ตรวจสอบคลังข้อมูลทั้งหมด ซึ่งสอดคล้องกับการใช้งานที่เพิ่มมากขึ้นของ ระบบอัตโนมัติและเครื่องมือ ที่วิเคราะห์โค้ดหรือสร้างการตรวจสอบอัตโนมัติ
แผนงานนี้ยังรวมถึงแนวคิดที่น่าสนใจอีกด้วย ได้แก่ การบูรณาการกับ แหล่งข้อมูลอื่นนอกเหนือจาก Gitการสนับสนุนด้วยแบบจำลองภาษาสำหรับการจำแนกประเภทผลการค้นพบและกลไกการเพิกถอนอัตโนมัติผ่าน API ของผู้ให้บริการ
นี่เป็นการเปิดประเด็นถกเถียงที่น่าสนใจ การทำให้การเพิกถอนสิทธิ์การเข้าถึงเป็นไปโดยอัตโนมัติสามารถลดเวลาในการตอบสนองต่อเหตุการณ์ได้ แต่ก็หมายความว่าเราต้องพึ่งพาความถูกต้องของระบบการจำแนกประเภทด้วยเช่นกัน
หากการยกเลิกอัตโนมัติล้มเหลวหรือถูกกระตุ้นโดยความผิดพลาด ผลกระทบต่อการดำเนินงานอาจรุนแรงมาก
ผลกระทบและข้อจำกัดในทางปฏิบัติ
จากมุมมองด้านการปฏิบัติงาน Betterleaks ดึงดูดใจทีมที่ต้องการลดการแจ้งเตือนผิดพลาดและทำให้การติดตั้งใช้งานง่ายขึ้น
แต่ก็สำคัญเช่นกันที่จะต้องคำนึงถึงข้อจำกัดบางประการ:
- ตัวชี้วัดการเรียกคืนข้อมูลขึ้นอยู่กับชุดข้อมูลที่ใช้และอาจแตกต่างกันอย่างมากระหว่างแหล่งเก็บข้อมูลต่างๆ
- การทำให้กระบวนการต่างๆ เช่น การยกเลิกคีย์เป็นไปโดยอัตโนมัติ จำเป็นต้องมีการควบคุมเพิ่มเติมและบันทึกการตรวจสอบ
- เครื่องสแกนลับเป็นเพียงชั้นหนึ่งของการป้องกันภายในกลยุทธ์ที่ครอบคลุมกว่านั้น
ในหลายกรณี การตัดสินใจนำเครื่องมือดังกล่าวมาใช้ไม่ได้ขึ้นอยู่กับความถูกต้องทางทฤษฎีมากนัก แต่ขึ้นอยู่กับสิ่งที่ง่ายกว่านั้น นั่นคือ เครื่องมือดังกล่าวสามารถผสานรวมเข้ากับขั้นตอนการทำงานของทีมได้ดีหรือไม่
เครื่องสแกนที่มีความแม่นยำสูงแต่สร้างแรงเสียดทานมากเกินไปมักจะถูกทิ้งไป ส่วนเครื่องสแกนที่มีความแม่นยำพอสมควรและง่ายต่อการใช้งานมักจะถูกเก็บไว้ใช้ต่อไป
ในแง่นั้น Betterleaks พยายามสร้างความสมดุล มันไม่ได้สัญญาว่าจะกำจัดผลลัพธ์ที่ผิดพลาดทั้งหมดหรือแทนที่กระบวนการรักษาความปลอดภัยที่มีอยู่ แต่มีเป้าหมายที่จะลดสัญญาณรบกวนและอำนวยความสะดวกในการบูรณาการเข้ากับกระบวนการทำงานสมัยใหม่
โปรเจ็กต์นี้สามารถเข้าถึงได้บน GitHub และนำเสนอในฐานะวิวัฒนาการของแนวทางที่ใช้โดย Gitleaks โดยมีจุดประสงค์เพื่อปรับให้เข้ากับคลังเก็บโค้ดที่การทำงานอัตโนมัติ ตัวแทนวิเคราะห์ และโค้ดที่สร้างโดยแบบจำลองภาษาเป็นส่วนหนึ่งของกระบวนการพัฒนาอย่างสม่ำเสมอ




















