Facebook ได้เปิดตัวเครื่องวิเคราะห์สแตติกแบบโอเพนซอร์สชื่อว่า« Pysa» (Python Static Analyzer) ซึ่งก็คือ ออกแบบมาเพื่อระบุช่องโหว่ที่อาจเกิดขึ้นในโค้ด Python
ปิศาจ ให้การวิเคราะห์การไหลของข้อมูล อันเป็นผลมาจากการเรียกใช้โค้ดซึ่ง ช่วยให้คุณระบุช่องโหว่และปัญหาที่อาจเกิดขึ้นมากมาย ความเป็นส่วนตัวที่เกี่ยวข้องกับการใช้ข้อมูลในที่ที่ไม่ควรปรากฏ
ตัวอย่างเช่น Pysa สามารถติดตามการใช้ข้อมูลดิบภายนอกในการโทร ที่รันโปรแกรมภายนอกในการดำเนินการไฟล์และในโครงสร้าง SQL
วันนี้เราแบ่งปันรายละเอียดเกี่ยวกับ Pysa ซึ่งเป็นเครื่องมือวิเคราะห์แบบคงที่แบบโอเพ่นซอร์สที่เราสร้างขึ้นเพื่อตรวจจับและป้องกันปัญหาด้านความปลอดภัยและความเป็นส่วนตัวในโค้ด Python เมื่อปีที่แล้วเราได้แบ่งปันวิธีที่เราสร้าง Zoncolan ซึ่งเป็นเครื่องมือวิเคราะห์แบบคงที่ซึ่งช่วยให้เราวิเคราะห์รหัสแฮ็กได้มากกว่า 100 ล้านบรรทัดและช่วยวิศวกรป้องกันปัญหาด้านความปลอดภัยที่อาจเกิดขึ้นหลายพันรายการ ความสำเร็จดังกล่าวเป็นแรงบันดาลใจให้เราพัฒนา Pysa ซึ่งเป็นคำย่อของ Python Static Analyzer
Pysa ใช้อัลกอริทึมเดียวกัน เพื่อทำการวิเคราะห์แบบคงที่และแม้แต่แชร์โค้ดด้วย ซองโคลัน. เช่นเดียวกับ Zoncolan, Pysa ติดตามการไหลของข้อมูลผ่านโปรแกรม
ผู้ใช้กำหนดแหล่งที่มา (สถานที่ที่ข้อมูลสำคัญมา) และซิงก์ (สถานที่ที่ข้อมูลต้นทางไม่ควรสิ้นสุด)
สำหรับแอปพลิเคชันด้านความปลอดภัยแหล่งที่มาที่พบบ่อยที่สุดคือที่ที่ข้อมูลที่ผู้ใช้ควบคุมเข้าสู่แอปพลิเคชันเช่นพจนานุกรม Django
ตัวรับมีแนวโน้มที่จะหลากหลายกว่ามาก แต่สามารถรวม API ที่เรียกใช้โค้ดได้เช่น eval
หรือ API ที่เข้าถึงระบบไฟล์เช่นos.open
.
Pysa ทำการวิเคราะห์วนซ้ำเพื่อสร้างบทคัดย่อ เพื่อกำหนดว่าฟังก์ชันใดที่ส่งคืนข้อมูลจากแหล่งที่มาและฟังก์ชันใดมีพารามิเตอร์ที่ส่งผลต่อซิงก์ในที่สุด หาก Pysa พบว่าแหล่งที่มาเชื่อมต่อกับซิงก์ในที่สุดก็จะรายงานปัญหา
งานวิเคราะห์ มันเดือดถึงการระบุแหล่งข้อมูลขาเข้า และการโทรที่เป็นอันตรายซึ่งไม่ควรใช้ข้อมูลเดิม
Pysa ตรวจสอบการส่งผ่านข้อมูลผ่านสายการเรียกใช้ฟังก์ชันและเชื่อมโยงข้อมูลดั้งเดิมกับตำแหน่งที่อาจเป็นอันตรายในโค้ด
เนื่องจากเราใช้เฟรมเวิร์กเซิร์ฟเวอร์ Python แบบโอเพนซอร์สเช่น Django และ Tornado สำหรับผลิตภัณฑ์ของเราเอง Pysa จึงเริ่มพบปัญหาด้านความปลอดภัยในโปรเจ็กต์ที่ใช้เฟรมเวิร์กเหล่านี้ตั้งแต่การรันครั้งแรก การใช้ Pysa สำหรับเฟรมเรายังไม่มีความครอบคลุมโดยทั่วไปนั้นทำได้ง่ายเพียงแค่เพิ่มบรรทัดการกำหนดค่าสองสามบรรทัดเพื่อบอก Pysa ว่าข้อมูลเข้ามาในเซิร์ฟเวอร์ที่ไหน
ช่องโหว่ทั่วไปที่ระบุโดย Pysa คือปัญหาการเปลี่ยนเส้นทางแบบเปิด (CVE-2019-19775) ในแพลตฟอร์มการส่งข้อความ Zulip ซึ่งเกิดจากการส่งผ่านพารามิเตอร์ภายนอกที่ไม่สะอาดเมื่อแสดงภาพขนาดย่อ
ความสามารถในการติดตามการไหลของข้อมูลของ Pysa สามารถใช้เพื่อตรวจสอบความถูกต้องของการใช้เฟรมเพิ่มเติมและกำหนดการปฏิบัติตามนโยบายการใช้ข้อมูลของผู้ใช้
เช่น Pysa ที่ไม่มีการกำหนดค่าเพิ่มเติมสามารถใช้เพื่อตรวจสอบโครงการโดยใช้กรอบ Django และ Tornado Pysa ยังสามารถระบุช่องโหว่ทั่วไปในเว็บแอปพลิเคชันเช่นการแทนที่ SQL และการเขียนสคริปต์ข้ามไซต์ (XSS)
บน Facebook ตัววิเคราะห์จะใช้เพื่อตรวจสอบรหัสของบริการ Instagram. ในช่วงไตรมาสแรกของปี 2020 Pysa ช่วยระบุ 44% ของปัญหาทั้งหมดที่วิศวกรของ Facebook พบในฐานรหัสฝั่งเซิร์ฟเวอร์ของ Instagram
มีการระบุปัญหาทั้งหมด 330 ปัญหาในกระบวนการ ของการตรวจสอบการเปลี่ยนแปลงอัตโนมัติโดยใช้ Pysa ซึ่ง 49 (15%) ได้รับการประเมินว่ามีนัยสำคัญและ 131 (40%) ไม่เป็นอันตราย ใน 150 กรณี (45%) ปัญหาเกิดจากผลบวกปลอม
ตัวแยกวิเคราะห์ใหม่ได้รับการออกแบบให้เป็นส่วนเสริมของชุดเครื่องมือการตรวจสอบประเภท Pyre และวางไว้ในที่เก็บของคุณ รหัสนี้เผยแพร่ภายใต้ใบอนุญาต MIT
ในที่สุด หากคุณต้องการทราบข้อมูลเพิ่มเติม คุณสามารถตรวจสอบรายละเอียดในโพสต์ต้นฉบับ ลิงค์คือนี่