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