pip และ easy_install ดาวน์โหลดแพ็คเกจ Python อย่างปลอดภัยหรือไม่


4

ตัวอย่างเช่นพวกเขาตรวจสอบลายเซ็นดิจิทัล (เช่น apt-get และ Windows Update) หรือต้องใช้ SSL หรือไม่ ถ้าไม่ฉันกังวลเล็กน้อยว่าแพคเกจที่ดาวน์โหลดมาอาจถูกโทรจัน ..


1
อย่างจริงจัง? เครื่องมืออัปเดตของคุณอาจถูกโทรจันพื้นที่เก็บข้อมูลอาจถูกแฮ็กหรือแพคเกจ Python เองอาจมีแบ็คดอร์อยู่ หากคุณกังวลเกี่ยวกับคนที่วางยาพิษในการดาวน์โหลดคุณควรติดตั้งแพ็กเกจด้วยตัวคุณเอง (ทำการแฮชการคำนวณบนปากกาและกระดาษเพื่อให้แน่ใจว่าแน่นอน!) พูดง่ายๆก็คือคุณคิดว่าคุณกำลังล่อลวงตัวเองให้รู้สึกปลอดภัยหากคุณคิดว่าลายเซ็นดิจิทัลเป็นคำตอบสุดท้ายของไวรัส
Thomas

1
@Thomas พวกเขาสามารถป้องกันความเสียหายที่อาจเกิดขึ้นได้มากมายเมื่อติดเชื้อในที่เก็บ
Thom Wiggers

แน่นอนว่าลายเซ็นดิจิทัลจะไม่ป้องกันแบ็คดอร์ในแพ็คเกจ พวกเขาจะปกป้องจากการปลอมแปลง DNS และการหักหลัง และวิธีที่จะนำแพคเกจแบ็คดอทไปใช้ก็คือการแฮ็คเครื่องของนักพัฒนาซอฟต์แวร์ ด้วยแพคเกจโทรจัน;)
eug

คำตอบ:


3

จุดเล็ก ๆ ได้รับการปรับปรุง :

การตรวจสอบใบรับรอง SSL

เริ่มต้นด้วย v1.3, pip แสดงการตรวจสอบใบรับรอง SSL มากกว่า   https เพื่อป้องกันการโจมตีแบบคนกลางตรงกลางกับการดาวน์โหลด PyPI

เวอร์ชัน 8.0 ยังมีฟังก์ชันการทำงานเพื่อ ตรวจสอบกับแฮชท้องถิ่น .


2

แพ็คเกจ Python ทั้งหมดไม่ได้ถูกโฮสต์ไว้ใน pypi.python.org แต่ easy_install จะค้นหาหน้า PyPi สำหรับลิงค์ดาวน์โหลด แพ็คเกจทั่วไปจำนวนมากเช่น PIL และ lxml ใช้เซิร์ฟเวอร์การแจกจ่ายของตนเอง ตัวอย่าง: http://pypi.python.org/pypi/PIL/

pypi.python.org นั้นดูเหมือนจะไม่ให้การสนับสนุน HTTPS ทุกชนิด

หากคุณต้องการมอบสภาพแวดล้อม easy_install / pip ที่ปลอดภัยฉันขอแนะนำให้คุณทำมิเรอร์แพ็คเกจที่จำเป็นไปยังเซิร์ฟเวอร์ที่คุณดูแลรักษา HTTPS ด้วยตัวคุณเองแล้ว จำกัด การดาวน์โหลดไปยังเซิร์ฟเวอร์นี้โดยใช้ --allow-hosts ตัวเลือก:

http://packages.python.org/distribute/easy_install.html#restricting-downloads-with-allow-hosts


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

1
โปรดดูคำตอบด้านล่างคำตอบนี้ล้าสมัย
Mikko Ohtamaa

1

หากมีข้อมูล MD5 ควรถูกเพิ่มเข้าไปใน URL ที่ดาวน์โหลดโดยการเพิ่มตัวระบุส่วนของรูปแบบ # md5 = ... โดยที่ ... เป็น MD5 hex ที่เป็นอักขระ 32 ตัว EasyInstall จะตรวจสอบว่าการแยกย่อย MD5 ของไฟล์ที่ดาวน์โหลดมานั้นตรงกับค่าที่กำหนดหรือไม่

http://packages.python.org/distribute/easy_install.html

ดูเหมือนว่า easy_install จะทำการตรวจสอบความถูกต้อง แต่ดูเหมือนว่า เท่านั้น ตรวจสอบว่าที่เก็บแพ็กเกจระบุรหัส MD5 หรือไม่

แผนการในอนาคต ส่วนของหน้าเดียวกันนี้เพิ่มเติมไฮไลต์นี้:

แผนการในอนาคต:
- การตรวจสอบลายเซ็น? SSL? ความสามารถในการระงับการค้นหา PyPI หรือไม่


แต่คีย์ MD5 ถูกดาวน์โหลดจากที่เก็บอย่างปลอดภัยหรือไม่?
eug

1
ไม่ดูเหมือนว่ามันถูกสร้างขึ้นโดยแหล่งเก็บข้อมูลและมีความหมายเพียงต่อความสมบูรณ์ของการดาวน์โหลด
Thom Wiggers
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.