ที่เก็บ PyPI มีรหัสที่อาจไม่ปลอดภัย

นักวิจัยจากมหาวิทยาลัย 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 รวมความสามารถในการดาวน์โหลดและเรียกใช้โค้ดสั่งการของบุคคลที่สาม

ในที่สุด หากคุณสนใจที่จะทราบข้อมูลเพิ่มเติมคุณสามารถตรวจสอบรายละเอียด ในลิงค์ต่อไปนี้.


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา