Kho lưu trữ PyPI chứa mã có khả năng không an toàn

Các nhà nghiên cứu từ Đại học Turku (Phần Lan) được biết đến gần đây kết quả của một phân tích họ đã làm với các gói trong kho lưu trữ bởi PyPI để sử dụng các công trình xây dựng nguy hiểm tiềm ẩn có thể tạo ra lỗ hổng bảo mật. Trong phân tích rằng khoảng 197.000 gói đã được thực hiện và 749.000 sự cố bảo mật có thể xảy ra đã được xác định.

Nói cách khác, 46% các gói có ít nhất một trong những vấn đề này, trong đó những vấn đề phổ biến nhất là những vấn đề liên quan đến việc xử lý các ngoại lệ và sử dụng các khả năng thay thế mã.

Trong số 749 nghìn vấn đề được xác định, 442 nghìn (41%) được đánh dấu là trẻ vị thành niên, 227 nghìn (30%) ở mức nguy hiểm vừa phải và 80 nghìn (11%) là nguy hiểm.

Tập dữ liệu dựa trên ảnh chụp nhanh của tất cả các gói được lưu trữ trong Chỉ mục gói Python (PyPI) ...

Xét về các loại vấn đề, chẳng hạn như xử lý ngoại lệ và chèn mã khác nhau là những vấn đề phổ biến nhất. Theo nghĩa này, mô-đun luồng nổi bật. Phản ánh về kích thước gói tin nói chung nhỏ, số liệu kích thước phần mềm không dự đoán tốt số lượng các vấn đề được tiết lộ thông qua phân tích. 

Một số gói không bình thường và chứa hàng nghìn vấn đề: Ví dụ: 2589 sự cố được tìm thấy trong gói PyGGI, chủ yếu liên quan đến việc sử dụng cấu trúc "try-exception-pass" và 2356 sự cố được tìm thấy trong gói appengine-sdk. Ngoài ra còn có rất nhiều vấn đề trong các gói genie.libs.ops, pbcore và genie.libs.parser.

Cần lưu ý rằng kết quả thu được trên cơ sở phân tích tĩnh tự động, không tính đến bối cảnh ứng dụng của các cấu trúc nhất định.

Nhà phát triển Bandit, người được sử dụng để quét mã, đã đề xuất rằng do số lượng lớn dương tính giả, lkết quả quét không thể được coi là lỗ hổng trực tiếp mà không cần xem xét thủ công bổ sung cho từng vấn đề.

Ví dụ: trình phân tích cú pháp coi việc sử dụng các trình tạo số ngẫu nhiên không đáng tin cậy và các thuật toán băm như MD5 là một vấn đề bảo mật, trong khi trong mã, các thuật toán này có thể được sử dụng cho các mục đích không ảnh hưởng đến bảo mật.

Máy phân tích cũng xem xét rằng bất kỳ quá trình xử lý dữ liệu bên ngoài nào trong các chức năng không an toàn như pickle, yaml.load, subprocess và eval đó là một vấn đề, nhưng việc sử dụng này không nhất thiết phải liên quan đến lỗ hổng bảo mật và trên thực tế, việc sử dụng các chức năng này có thể là một vấn đề được thực hiện mà không có mối đe dọa đối với bảo mật.

Trong số các đối chứng được sử dụng trong nghiên cứu:

  • Sử dụng các hàm có khả năng không an toàn thực thi, mktemp, eval, mark_safe, v.v.
  • Cấu hình không an toàn của quyền truy cập tệp.
  • Kết nối phích cắm mạng với tất cả các giao diện mạng.
  • Sử dụng mật khẩu và khóa được mã hóa.
  • Sử dụng một thư mục tạm thời được xác định trước.
  • Sử dụng pass và tiếp tục trong các trình xử lý ngoại lệ kiểu catch-all-style.
  • Khởi chạy các ứng dụng web dựa trên khung web Flask với chế độ gỡ lỗi được bật.
  • Sử dụng các phương pháp không an toàn để giải mã dữ liệu.
  • Sử dụng các hàm băm MD2, MD4, MD5 và SHA1.
  • Sử dụng các chế độ mã hóa và mật mã DES không an toàn.
  • Sử dụng triển khai HTTPSConnection không an toàn trong một số phiên bản Python.
  • Chỉ định tệp: // lược đồ trong urlopen.
  • Sử dụng trình tạo số giả ngẫu nhiên khi thực hiện các tác vụ mật mã.
  • Sử dụng giao thức Telnet.
  • Sử dụng trình phân tích cú pháp XML không an toàn.

Ngoài ra, việc phát hiện 8 gói độc hại trong thư mục PyPI cũng được đề cập. Các gói sự cố đã được tải xuống hơn 30 lần trước khi bị gỡ bỏ. Để ẩn hoạt động độc hại và tránh các cảnh báo phân tích cú pháp tĩnh đơn giản trên các gói, chúng tôi đã sử dụng mã hóa khối với mã sử dụng định dạng Base64 và tổ chức thực thi sau khi giải mã bằng cách gọi eval.

Mã được tìm thấy trong các gói noblesse, genesisbot, là, đủ, noblesse2 và noblessev2 để chặn số thẻ tín dụng và mật khẩu được lưu trữ trong trình duyệt Chrome và Edge, cũng như chuyển mã thông báo tài khoản từ ứng dụng Discord và gửi dữ liệu từ hệ thống, bao gồm cả ảnh chụp màn hình của nội dung màn hình. … Các gói pytagora và pytagora2 bao gồm khả năng tải xuống và chạy mã thực thi của bên thứ ba.

Cuối cùng nếu bạn muốn biết thêm về nó, bạn có thể kiểm tra các chi tiết Trong liên kết sau đây.


Nội dung bài viết tuân thủ các nguyên tắc của chúng tôi về đạo đức biên tập. Để báo lỗi, hãy nhấp vào đây.

Hãy là người đầu tiên nhận xét

Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.