Q.Tap: เครื่องมือ eBPF ที่มองทะลุการเข้ารหัสโดยไม่กระทบประสิทธิภาพ

BigGo Editorial Team
Q.Tap: เครื่องมือ eBPF ที่มองทะลุการเข้ารหัสโดยไม่กระทบประสิทธิภาพ

การตรวจสอบการจราจรเครือข่ายมักเกี่ยวข้องกับการแลกเปลี่ยนระหว่างการมองเห็นและประสิทธิภาพเสมอ วิธีการแบบดั้งเดิมเช่น พร็อกซี่แบบ man-in-the-middle (MITM) ต้องการการจัดการใบรับรองและทำให้เกิดความล่าช้า Q.Tap เป็นเครื่องมือโอเพนซอร์สที่ใช้ eBPF มีเป้าหมายเพื่อแก้ไขความท้าทายเหล่านี้โดยให้การมองเห็นข้อมูลที่เข้ารหัสโดยไม่ส่งผลกระทบต่อประสิทธิภาพ

Q.Tap ทำงานอย่างไร

Q.Tap ใช้ประโยชน์จาก eBPF (extended Berkeley Packet Filter) เพื่อเชื่อมต่อกับฟังก์ชัน TLS/SSL ในเคอร์เนลของ Linux โดยดักจับข้อมูลก่อนการเข้ารหัสและหลังการถอดรหัส วิธีนี้ช่วยให้นักพัฒนาและผู้เชี่ยวชาญด้านความปลอดภัยสามารถเห็นข้อมูลที่ไม่ได้เข้ารหัสโดยไม่ต้องแก้ไขแอปพลิเคชัน ไม่ต้องติดตั้งพร็อกซี่ หรือจัดการใบรับรอง เครื่องมือนี้ทำงานแบบนอกช่องทางโดยมีค่าโอเวอร์เฮดน้อยมาก หลีกเลี่ยงปัญหาความล่าช้าที่พบบ่อยในโซลูชัน MITM

สำหรับแอปพลิเคชันที่ใช้ OpenSSL, Q.Tap จะสแกนไบนารีเพื่อหาสัญลักษณ์ TLS และเชื่อมต่อโพรบ eBPF กับฟังก์ชันเช่น SSL_read และ SSL_write วิธีนี้ใช้ได้ทั้งกับไลบรารีที่ลิงก์แบบไดนามิกและไบนารีที่คอมไพล์แบบสแตติก ทำให้มีความครอบคลุมกว้างกว่าโซลูชันทางเลือกอื่นๆ หลายตัว

การรองรับภาษาและความท้าทายทางเทคนิค

ในขณะที่เวอร์ชันโอเพนซอร์สของ Q.Tap มุ่งเน้นไปที่ OpenSSL เป็นหลัก การสนทนาในชุมชนเผยให้เห็นว่าการรองรับภาษาและรันไทม์อื่นๆ มีความแตกต่างกัน การรองรับ Go มีอยู่แล้วแต่ยังไม่ได้เปิดเป็นโอเพนซอร์ส ซึ่งต้องการการจัดการพิเศษเนื่องจากวิธีการลิงก์แบบสแตติกของ Go

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

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

ข้อกำหนดของ Q.Tap

  • Linux ที่มี Kernel 5.10+ พร้อมเปิดใช้งาน BPF Type Format (BTF)
  • เปิดใช้งาน eBPF บนเครื่องโฮสต์
  • สิทธิ์การเข้าถึงระดับสูง (sudo บนโฮสต์หรือการตั้งค่า Docker container เฉพาะ)

กรณีการใช้งาน Q.Tap

  • การตรวจสอบความปลอดภัย
  • การแก้ไขปัญหาเครือข่าย
  • การพัฒนา API
  • การแก้ไขปัญหาการทำงานร่วมกับระบบของบุคคลที่สาม
  • การเรียนรู้และสำรวจ
  • การตรวจสอบระบบเก่า
  • การทดสอบเพื่อตรวจสอบความถูกต้อง

ข้อกำหนดเบื้องต้นสำหรับการพัฒนา

  • Linux (kernel 5.8+)
  • Go 1.24+
  • make
  • clang14
  • clang-tidy (ตัวเลือกเสริม)

ข้อได้เปรียบเหนือวิธีการแบบดั้งเดิม

ไม่เหมือนกับพร็อกซี่ MITM หรือเครื่องมือที่ต้องการตัวแปรสภาพแวดล้อมเช่น SSLKEYLOGFILE ที่ต้องตั้งค่าก่อนเริ่มแอปพลิเคชัน Q.Tap สามารถเชื่อมต่อกับกระบวนการที่กำลังทำงานได้ ซึ่งทำให้มีคุณค่าเป็นพิเศษสำหรับการแก้ไขปัญหาในการผลิตโดยไม่ต้องรีสตาร์ทบริการ ความสามารถในการดูข้อมูลที่เข้ารหัสโดยไม่เพิ่มความล่าช้าช่วยแก้ปัญหาสำคัญสำหรับนักพัฒนาที่ดีบักการสื่อสารเครือข่าย

เครื่องมือนี้ยังให้ข้อมูลบริบทที่อุดมสมบูรณ์นอกเหนือจากเนื้อหาที่ถอดรหัสแล้ว รวมถึงรายละเอียดต้นทาง/ปลายทาง การใช้แบนด์วิดธ์ ข้อมูล SNI ข้อมูลเมตาของคอนเทนเนอร์ และแม้แต่ข้อมูลพอดและเนมสเปซของ Kubernetes เมื่อเกี่ยวข้อง

ข้อพิจารณาด้านความปลอดภัย

เช่นเดียวกับเครื่องมือใดๆ ที่ถอดรหัสการจราจร Q.Tap ก่อให้เกิดความกังวลด้านความปลอดภัย นักพัฒนาเน้นย้ำว่า Q.Tap ทำงานเฉพาะบนโหนดของคุณเท่านั้น ทำให้คุณควบคุมสิ่งที่มันจับและข้อมูลนั้นไปที่ไหน ตัวตรวจสอบ eBPF ให้การรับประกันความปลอดภัยที่ป้องกันการเข้าถึงหน่วยความจำแบบสุ่ม

สำหรับองค์กรที่มีข้อกำหนดการปฏิบัติตามกฎระเบียบที่เข้มงวด Q.Tap มีตัวเลือกการกำหนดค่ารวมถึงการปิดการตรวจสอบ TLS ทั้งหมดในขณะที่ยังคงให้ข้อมูลเมตาการเชื่อมต่อ บริการที่มีค่าใช้จ่ายจาก Qpoint.io มีคุณสมบัติความปลอดภัยเพิ่มเติมและระบบควบคุมสำหรับแดชบอร์ดและการแจ้งเตือน

ข้อจำกัดและทิศทางในอนาคต

Q.Tap ปัจจุบันมีข้อจำกัดหลายประการ มันต้องการ Linux ที่มี Kernel 5.10+ และการรองรับ eBPF พร้อมกับสิทธิ์ที่สูงขึ้น ผู้แสดงความคิดเห็นบางคนสังเกตว่า uprobes สามารถเพิ่มความล่าช้าผ่านการสลับบริบท แม้ว่านักพัฒนาจะอ้างว่าสิ่งนี้ไม่มีนัยสำคัญทางสถิติเมื่อเทียบกับพร็อกซี่ MITM

เครื่องมือนี้ยังไม่รองรับรันไทม์และภาษาทั้งหมดอย่างเท่าเทียมกัน ในขณะที่เวอร์ชันเชิงพาณิชย์รองรับ JVM, Go และ NodeJS โดยมีการรองรับ Rust อยู่ในระหว่างการพัฒนา เวอร์ชันโอเพนซอร์สมีความครอบคลุมที่จำกัดกว่า นอกจากนี้ Q.Tap ยังไม่ทำงานบนแพลตฟอร์มที่ไม่ใช่ Linux ในปัจจุบัน แม้ว่านักพัฒนาได้แสดงความสนใจในการสำรวจการใช้งาน eBPF ของ Microsoft สำหรับการรองรับ Windows

สำหรับผู้ที่สนใจทดลองใช้ Q.Tap โครงการนี้มีโหมดสาธิตอย่างรวดเร็วที่สามารถรันด้วยคำสั่ง curl อย่างง่าย ทำให้ง่ายต่อการเห็นเครื่องมือในการทำงานก่อนที่จะมุ่งมั่นในการติดตั้งเต็มรูปแบบ

อ้างอิง: Q.Tap