1 điểm bởi GN⁺ 2 giờ trước | 1 bình luận | Chia sẻ qua WhatsApp
  • PyPI chặn việc tải lên tệp mới đối với các bản phát hành đã quá 14 ngày kể từ khi được công bố, ताकि các bản phát hành hiện có đã ổn định không bị nhiễm bẩn ngay cả khi token hoặc quy trình triển khai bị chiếm đoạt
  • Chưa ghi nhận trường hợp bị khai thác thực tế nào cho đến nay, nhưng ngoài việc kẻ tấn công chưa biết đến khả năng này thì không hề có rào cản kỹ thuật nào ngăn chặn cuộc tấn công
  • Khảo sát 15.000 gói hàng đầu cho thấy chỉ có 56 dự án bổ sung wheel cp314 cho Python 3.14 sau 14 ngày kể từ khi phát hành
  • Các dự án từng bổ sung hỗ trợ phiên bản Python mới vào bản phát hành hiện có giờ đây sẽ phải phát hành phiên bản kế tiếp, và tại PyCon US 2026 Packaging Summit, đây cũng được xem là phương án có thể chấp nhận được
  • Hiện vẫn chưa có API để định nghĩa hoặc kiểm tra trạng thái mở/đóng của bản phát hành, vì vậy không nên phụ thuộc vào hành vi này; trong tương lai, PEP 694 cùng Upload 2.0 API và Staged Previews sẽ thiết lập ngữ nghĩa liên quan

Vì sao đóng các bản phát hành cũ

  • Thay đổi của PyPI chặn con đường tải tệp mới lên các bản phát hành cũ và đã ổn định
    • Điều này ngăn tình huống chỉ một phần của bản phát hành hiện có bị thay bằng tệp độc hại ngay cả khi token phát hành hoặc workflow của dự án bị xâm phạm
    • Nó cũng ngăn trạng thái mơ hồ khi trong cùng một bản phát hành lẫn lộn giữa tệp đã bị xâm phạm và tệp chưa bị xâm phạm, đồng thời giảm công việc dọn dẹp cho quản trị viên PyPI
  • Cuộc thảo luận bắt đầu vào tháng 1 năm 2024 trong quá trình làm việc về PEP 740 Digital Attestations, rồi được nối lại vào tháng 3 năm 2026
  • Thảo luận ban đầu từng bị dừng lại vì một số dự án vẫn thêm tệp hỗ trợ phiên bản Python mới vào các bản phát hành đã công bố
    • Để nắm tác động của thay đổi, dữ liệu từ cơ sở dữ liệu PyPI đã được dùng để khảo sát các dự án thêm tệp vào bản phát hành cũ theo số ngày đã trôi qua
    • Khi kiểm tra riêng các wheel cp314 trong 15.000 gói hàng đầu, kết quả là chỉ có 56 dự án công bố wheel tương thích Python 3.14 sau 14 ngày

Quyết định áp dụng và API trong tương lai

  • Tại PyCon US 2026 Packaging Summit, đã hình thành đồng thuận sơ bộ rằng việc yêu cầu tăng lên phiên bản kế tiếp khi hỗ trợ phiên bản Python mới là chấp nhận được
  • Dựa trên dữ liệu khảo sát và đồng thuận đó, bản vá Warehouse đã được thúc đẩy và được hợp nhất vào ngày 8 tháng 7 năm 2026
  • Giới hạn hiện tại vẫn chưa thể được xem là một giao diện ổn định
    • Định nghĩa về “bản phát hành không còn nhận tệp mới” vẫn chưa được chốt, và cũng chưa có API để kiểm tra trạng thái này
    • Sau khi PEP 694 chuẩn hóa Upload 2.0 APIStaged Previews, dự kiến sẽ có ngữ nghĩa để xử lý bản phát hành dưới dạng open hoặc closed

1 bình luận

 
Các ý kiến trên Lobste.rs
  • Đây là một thay đổi tốt, nhưng thật ngạc nhiên là chính sách như vậy lại chưa tồn tại từ nhiều năm trước
    • Ngay từ đầu, việc có thể thay đổi bản phát hành PyPI đã là điều đáng ngạc nhiên