PyPI package có chứa chương trình ăn cắp mật khẩu vì "nhầm lẫn"

WhiteHat Team

Administrators
Thành viên BQT
09/04/2020
93
613 bài viết
PyPI package có chứa chương trình ăn cắp mật khẩu vì "nhầm lẫn"
Các gói PyPI 'keep,' 'pyanxdns,' 'api-res-py' được phát hiện có chứa một backdoor từ dependency có tên là request trong một số phiên bản.

Ví dụ: Trong khi hầu hết các phiên bản của dự án 'keep' sử dụng module hơp pháp requests để thực hiện các request http. Nhưng 'keep' phiên bản 1.2 lại chứa module request với không có chữ s là một module mã độc.

Anh-whitehat-vn (1).png

Gói 'keep' của PyPI dùng module request độc hại​

Một số phiên bản của gói PyPI, 'keep,' 'pyanxdns,' và 'api-res-py' đã bị bắt bằng cách sử dụng malicious dependency 'request'.
Trở lại vào tháng 5, người dùng GitHub duxinglin1 thông báo các phiên bản dễ bị tấn công chứa phần phụ thuộc 'request' do sai chính tả, trái ngược với thư viện requests hợp pháp.

Các CVE sau liên quan đến các phiên bản dễ bị tấn công:
  • CVE-2022-30877 - phiên bản 'keep' 1.2 chứa 'request' backdoor, ngược với những gì mà khuyến cáo nhắc tới
  • CVE-2022-30882 - phiên bản 'pyanxdns' 0.2
  • CVE-2022-31313 - phiên bản 0.1 'api-res-py'
Mặc dù 'pyanxdns' và 'api-res-py' có thể là các dự án quy mô nhỏ, nhưng gói 'keep' được tải xuống trung bình hơn 8.000 lần/tuần với phiên bản 1.2 của nó bằng cách sử dụng malicious dependency:

anh-1.jpg


anh-2.jpg


Sử dụng malicious 'request' dependency trong 'keep' phiên bản 1.2

Năm 2020, hệ thống Tencent Onion Anti-Intrusion đã phát hiện ra một request lỗi chính tả độc hại được tải lên PyPI registry mạo danh thư viện requests HTTP nhưng thay vào đó lại xóa bỏ mã độc đánh cắp thông tin.

Người dùng GitHub duxinglin1 cho biết: "Chúng tôi đã tìm thấy một backdoor độc hại trong phiên bản 1.2 của dự án này là gói request. Thậm chí nếu như gói request được xóa bỏ bởi PyPI thì rất nhiều nhân bản của nó không thẻ xóa bỏ hoàn toàn được và nó có thể tiếp tục được cài đặt”.

Đoạn mã độc hại bên trong gói request được highlight trong hình dưới đây:

anh-3.jpg


Bên trong PyPI package giả 'request'

Dòng 57 được mã hóa theo kiểu base64-encodeed URL cho phần mềm check.so được thể hiện bên dưới. Nhà phân tích mối đe dọa blackorbird cũng đã xác định thêm một URL khác (x.pyx) được hiển thị bên dưới và liên kết với phụ thuộc 'request' giả mạo:

http: // dexy [.] top / request / check.so
http: // dexy [.] top / x.pyx

Tệp 'check.so' cung cấp Remote Access Trojan (RAT), trong khi 'x.pyx' do BleepingComputer thu được chứa phần mềm độc hại đánh cắp thông tin, cookie và thông tin cá nhân từ các trình duyệt web như Chrome, Firefox, Yandex, Brave,...

anh-4.jpg


Nội dung tệp x.pyx được giải mã bởi BleepingComputer

Info-stealing trojan sẽ cố gắng lấy cắp tên đăng nhập và mật khẩu được lưu trữ trong trình duyệt web. Sau khi có được quyền truy cập vào thông tin đăng nhập của người dùng, kẻ xấu sẽ cố xâm nhập các tài khoản khác được nhà phát triển sử dụng, có khả năng dẫn đến các cuộc tấn công chuỗi cung ứng.

Hijack hay chỉ là một lỗi đánh máy?​

Sự xuất hiện của malicious dependency trong nhiều gói PyPI đặt ra một câu hỏi: Liệu nó đã xảy ra như thế nào?

Marky Egebäck, tác giả của 'pyanxdns' xác nhận do lỗi đánh máy chứ không phải do xâm phạm tài khoản. Có vẻ như tác giả của hai gói khác cũng vô tình sử dụng 'request'.

Egebäck cho biết: "Nguyên nhân do lỗi đánh máy đơn giản trong tệp setup.py vì lịch sử git đã được thêm vào khi tôi thêm install_requires”. Kể từ đó, nhà phát triển đã tải lại phiên bản mới lên PyPI và xóa phiên bản tham chiếu đến phần "request" độc hại.

Egebäck đánh giá cao người dùng GitHub duxinglin1 vì đã chỉ ra malicious dependency và giải thích rằng anh ấy đã không dành nhiều thời gian để duy trì dự án Python gần đây.

Egebäck cho biết: “Điều tốt nhất là sửa lỗi này sớm hơn nhưng tôi lại không hiểu mức độ nghiêm trọng của nó vì tôi dành rất ít thời gian để code, sẽ mất kha khá thời gian đó”.

Khi code các ứng dụng, những lỗi đánh máy từ nhà phát triển có thể vô tình “tiếp tay” cho các cuộc tấn công typosquatting để làm tổn hại đến chuỗi cung ứng phần mềm lớn hơn.

Mặc dù trong trường hợp này, phần dependency 'request' độc hại đã bị xóa khỏi sổ đăng ký PyPI từ lâu, bất kỳ ai sử dụng phiên bản dễ bị tấn công của gói PyPI và nhân bản để tìm nạp phần phụ thuộc đều có thể gặp phải những kẻ ăn cắp thông tin độc hại trên hệ thống.

 
Chỉnh sửa lần cuối:
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Thẻ
pypi package
Bên trên