กลุ่มนักวิจัยจากมหาวิทยาลัย Turku (ฟินแลนด์) เผยแพร่ผลการวิเคราะห์แพ็คเกจในพื้นที่เก็บข้อมูล PyPI สำหรับการใช้โครงสร้างที่อาจเป็นอันตรายซึ่งอาจนำไปสู่ช่องโหว่ ในระหว่างการวิเคราะห์บรรจุภัณฑ์ 197 ชิ้น พบปัญหาด้านความปลอดภัยที่อาจเกิดขึ้นได้ 749 รายการ 46% ของบรรจุภัณฑ์มีปัญหาดังกล่าวอย่างน้อยหนึ่งปัญหา ปัญหาที่พบบ่อยที่สุด ได้แก่ ข้อบกพร่องที่เกี่ยวข้องกับการจัดการข้อยกเว้นและการใช้คุณลักษณะที่อนุญาตให้มีการทดแทนโค้ด
จากปัญหา 749 ที่ระบุนั้น 442 (41%) ถูกระบุว่าเป็นผู้เยาว์ 227 (30%) เป็นปัญหาปานกลาง และ 80 (11%) เป็นปัญหาอันตราย แพ็คเกจบางแพ็คเกจโดดเด่นจากฝูงชนและมีปัญหามากมาย ตัวอย่างเช่น แพ็คเกจ PyGGI ระบุปัญหา 2589 ปัญหา ส่วนใหญ่เกี่ยวข้องกับการใช้โครงสร้าง "try-ยกเว้น-pass" และแพ็คเกจ appengine-sdk พบปัญหา 2356 ปัญหา ปัญหาจำนวนมากยังปรากฏอยู่ในแพ็คเกจ genie.libs.ops, pbcore และ genie.libs.parser
ควรสังเกตว่าผลลัพธ์ที่ได้มาจากการวิเคราะห์แบบคงที่อัตโนมัติซึ่งไม่ได้คำนึงถึงบริบทของการประยุกต์ใช้โครงสร้างบางอย่าง ผู้พัฒนาชุดเครื่องมือ Bandit ซึ่งใช้ในการสแกนโค้ด ได้แสดงความเห็นว่า เนื่องจากมีจำนวนผลบวกลวงที่ค่อนข้างสูง ผลการสแกนจึงไม่สามารถพิจารณาถึงช่องโหว่ได้โดยตรง หากไม่มีการตรวจทานด้วยตนเองเพิ่มเติมในแต่ละปัญหา
ตัวอย่างเช่น เครื่องวิเคราะห์พิจารณาว่าการใช้ตัวสร้างตัวเลขสุ่มที่ไม่น่าเชื่อถือและอัลกอริธึมแฮช เช่น MD5 เป็นปัญหาด้านความปลอดภัย ในขณะที่ในโค้ด อัลกอริธึมดังกล่าวอาจใช้เพื่อวัตถุประสงค์ที่ไม่ส่งผลกระทบต่อความปลอดภัย เครื่องวิเคราะห์ยังพิจารณาการประมวลผลข้อมูลภายนอกในฟังก์ชันที่ไม่ปลอดภัย เช่น การดอง, yaml.load, กระบวนการย่อย และการประเมินปัญหา แต่การใช้งานนี้ไม่จำเป็นต้องมีช่องโหว่เสมอไป และในความเป็นจริงแล้ว การใช้ฟังก์ชันเหล่านี้สามารถนำไปใช้ได้โดยไม่มีภัยคุกคามด้านความปลอดภัย .
ในบรรดาการทดสอบที่ใช้ในการศึกษานี้:
- การใช้ฟังก์ชันที่อาจไม่ปลอดภัย exec, mktemp, eval, mark_safe ฯลฯ
- การตั้งค่าสิทธิ์การเข้าถึงไฟล์ที่ไม่ปลอดภัย
- การต่อซ็อกเก็ตเครือข่ายเข้ากับอินเทอร์เฟซเครือข่ายทั้งหมด
- การใช้รหัสผ่านและกุญแจที่ระบุไว้ในรหัสอย่างเคร่งครัด
- การใช้ไดเร็กทอรีชั่วคราวที่กำหนดไว้ล่วงหน้า
- การใช้ pass และดำเนินการต่อในตัวจัดการข้อยกเว้นแบบ catch-all-style
- การเปิดตัวแอปพลิเคชันเว็บตามเฟรมเวิร์กเว็บ Flask โดยเปิดใช้งานโหมดแก้ไขจุดบกพร่อง
- การใช้วิธีการดีซีเรียลไลซ์ข้อมูลที่ไม่ปลอดภัย
- ใช้ฟังก์ชันแฮช MD2, MD4, MD5 และ SHA1
- การใช้รหัส DES และโหมดการเข้ารหัสที่ไม่ปลอดภัย
- การใช้งาน HTTPSConnection ที่ไม่ปลอดภัยใน Python บางเวอร์ชัน
- การระบุ file:// แบบแผนใน urlopen
- การใช้ตัวสร้างตัวเลขสุ่มเทียมเมื่อดำเนินการงานการเข้ารหัส
- การใช้โปรโตคอล Telnet
- การใช้ตัวแยกวิเคราะห์ XML ที่ไม่ปลอดภัย
นอกจากนี้ยังสามารถสังเกตได้ว่าตรวจพบแพ็คเกจที่เป็นอันตราย 8 รายการในไดเร็กทอรี PyPI ก่อนที่จะลบ มีการดาวน์โหลดแพ็คเกจที่มีปัญหามากกว่า 30 ครั้ง เพื่อซ่อนกิจกรรมที่เป็นอันตรายและเลี่ยงคำเตือนจากเครื่องมือวิเคราะห์คงที่แบบธรรมดาในแพ็คเกจ บล็อกโค้ดจะถูกเข้ารหัสโดยใช้ Base64 และดำเนินการหลังจากการถอดรหัสโดยใช้การเรียก eval
แพ็คเกจ noblesse, genesisbot, ทนทุกข์ทรมาน, noblesse2 และ noblessev2 มีรหัสเพื่อสกัดกั้นหมายเลขบัตรเครดิตและรหัสผ่านที่จัดเก็บไว้ในเบราว์เซอร์ Chrome และ Edge รวมถึงโอนโทเค็นบัญชีจากแอปพลิเคชัน Discord และส่งข้อมูลระบบรวมถึงภาพหน้าจอของเนื้อหาบนหน้าจอ แพ็คเกจ pytagora และ pytagora2 มีความสามารถในการโหลดและรันโค้ดปฏิบัติการของบุคคลที่สาม
ที่มา: opennet.ru