PyPI Tăng Cường An Toàn Thông Tin: Giới Hạn Nghiêm Ngặt Mới

PyPI Tăng Cường An Toàn Thông Tin: Giới Hạn Nghiêm Ngặt Mới

PyPI đã triển khai một biện pháp bảo mật mới, ngăn chặn người dùng tải lên các tệp tin mới cho các phiên bản gói phát hành đã quá 14 ngày. Thay đổi này nhằm tăng cường an toàn thông tin, ngăn chặn kẻ tấn công thêm các tệp độc hại vào các phiên bản gói Python đáng tin cậy sau khi chiếm quyền token xuất bản hoặc quy trình phát hành của người duy trì.

Giới Hạn 14 Ngày Trên PyPI

PyPI đã bắt đầu từ chối các lượt tải lên mới cho các bản phát hành đã hơn 14 ngày. Hạn chế này được tích hợp vào mã nguồn PyPI Warehouse vào ngày 8 tháng 7 năm 2022. Đây là một bước quan trọng để giải quyết các rủi ro bảo mật chuỗi cung ứng phần mềm, góp phần củng cố an toàn thông tin tổng thể của hệ sinh thái Python.

Rủi Ro Từ Các Bản Phát Hành “Open-Ended”

Trước đây, người duy trì gói có thể xuất bản thêm các tệp vào một bản phát hành hiện có bất cứ lúc nào. Ví dụ, một người duy trì có thể tải lên một “wheel” mới cho một phiên bản Python mới hơn mà vẫn giữ nguyên số phiên bản gói.

Sự linh hoạt này hữu ích cho khả năng tương thích nhưng cũng tạo ra cơ hội cho các cuộc tấn công. Nếu kẻ tấn công giành được quyền truy cập vào token API PyPI, xâm nhập vào đường ống CI/CD hoặc lạm dụng quy trình xuất bản đáng tin cậy. Chúng có thể tải lên một “wheel” độc hại vào một bản phát hành cũ mà các nhà phát triển vẫn tin là an toàn.

Do số phiên bản không thay đổi, việc xác định tệp độc hại trong quá trình cập nhật phụ thuộc định kỳ sẽ trở nên khó khăn hơn. Quy tắc mới hạn chế mối đe dọa mạng này đáng kể. Một khi một bản phát hành đã hơn 14 ngày, PyPI sẽ không còn chấp nhận các lượt tải lên tệp mới cho phiên bản đó.

Ngăn Chặn Các Cuộc Tấn Công Chuỗi Cung Ứng

PyPI đã chỉ ra rằng họ không nhận thức được việc kẻ tấn công đã khai thác lỗ hổng cụ thể này trước đây. Tuy nhiên, nền tảng này cũng lưu ý rằng không có biện pháp kiểm soát kỹ thuật nào để ngăn chặn các kịch bản như vậy. Trừ khi kẻ tấn công không nhận ra cơ hội khai thác này, an toàn thông tin sẽ bị đe dọa.

Vấn đề này trở nên nổi bật sau sự cố xâm nhập các gói Python phổ biến như LiteLLMTelnyx vào năm 2022. Các sự cố này đã làm nổi bật cách các môi trường phát hành tự động đáng tin cậy có thể trở thành điểm vào cho các cuộc tấn công chuỗi cung ứng, đòi hỏi phải có các biện pháp nâng cao an toàn thông tin.

Với các hạn chế mới được áp dụng, một tài khoản duy trì bị xâm nhập không còn có thể âm thầm thêm một tệp độc hại vào một bản phát hành đã tồn tại lâu. Người duy trì cần xuất bản hỗ trợ cho một phiên bản Python mới thường sẽ phải tạo và phát hành một phiên bản gói mới thay vì cập nhật phiên bản cũ.

Đơn Giản Hóa Phản Ứng Sự Cố

Thay đổi này cũng đơn giản hóa quy trình phản ứng sự cố cho cả quản trị viên PyPI và người dùng gói. Theo mô hình trước đây, một bản phát hành gói có thể chứa cả tệp hợp pháp và tệp độc hại, tùy thuộc vào thời điểm mỗi tệp được tải lên. Điều này khiến người dùng không chắc chắn về mức độ an toàn của một phiên bản phát hành cụ thể, làm giảm an toàn thông tin của hệ thống.

Cơ Sở Phân Tích Và Đồng Thuận

Trước khi triển khai quy tắc này, PyPI đã xem xét các mẫu xuất bản lịch sử để hiểu các tác động tiềm ẩn. Phân tích này bao gồm các dự án đã thêm tệp sau khi một bản phát hành đã được công bố.

Một đánh giá các “wheel” tương thích với Python 3.10 trên 15.000 gói hàng đầu cho thấy chỉ có 56 dự án đã tải lên một “wheel” tương thích sau hơn 14 ngày kể từ ngày phát hành ban đầu. Điều này cho thấy yêu cầu một phiên bản gói mới sẽ có tác động tối thiểu đến hầu hết người duy trì. Để biết thêm chi tiết, bạn có thể tham khảo bài viết trên blog chính thức của PyPI: PyPI Blog Post.

Đề xuất này cũng đã được thảo luận tại Hội nghị Thượng đỉnh Đóng gói trong PyCon US 2022. Tại đây, những người tham gia đã đạt được sự đồng thuận sơ bộ rằng việc các dự án tăng số phiên bản khi thêm hỗ trợ cho các phiên bản Python mới là chấp nhận được. Đây là một bước tiến quan trọng trong việc nâng cao an toàn thông tin cho cộng đồng phát triển Python.

Triển Vọng Và Hạn Chế Hiện Tại

PyPI đã cảnh báo người dùng không nên dựa vào hành vi này như một sự đảm bảo chính thức về trạng thái phát hành. Hiện tại không có ngữ nghĩa API nào được công bố xác nhận liệu một bản phát hành có mở hay đóng để tải lên.

Các định nghĩa như vậy dự kiến sẽ xuất hiện thông qua API Upload 2.0 được đề xuất và các bản xem trước theo giai đoạn được mô tả trong PEP 694. Cho đến lúc đó, giới hạn 14 ngày đóng vai trò là một biện pháp bảo vệ thực tế chống lại một rủi ro bảo mật tinh vi nhưng đáng kể của việc đầu độc gói. Việc này nhấn mạnh tầm quan trọng của việc liên tục cải thiện an toàn thông tin trong các hệ sinh thái phần mềm mở.