PyPI یک قابلیت جدید به نام “بایگانی پروژه” معرفی کرده که به توسعهدهندگان اجازه میدهد پروژههای خود را آرشیو کنند. این کار به کاربران نشان میدهد که پروژه دیگر بهروزرسانی نخواهد شد.
پروژههای بایگانیشده همچنان در PyPI باقی میمانند و کاربران میتوانند آنها را دانلود کنند، اما هشداری درباره وضعیت نگهداری پروژه دریافت میکنند تا بتوانند تصمیم بگیرند که آیا همچنان از آن استفاده کنند یا به گزینههای دیگر فکر کنند.
این قابلیت جدید امنیت اکوسیستم نرمافزارهای متنباز را افزایش میدهد، زیرا یکی از مشکلات رایج این است که مهاجمان حسابهای توسعهدهندگان را تصاحب کرده و برای پروژههای پرکاربرد اما بدون پشتیبان، بهروزرسانیهای مخرب منتشر میکنند.
علاوه بر کاهش ریسک برای کاربران، این قابلیت همچنین با اطمینان از ارتباط شفاف درباره وضعیت چرخه عمر پروژه، تعداد درخواستهای پشتیبانی از سوی کاربران را کاهش میدهد.
بایگانی پروژه چگونه کار میکند؟
بر اساس یک پست وبلاگی دقیقتر از TrailofBits، توسعهدهنده سیستم جدید بایگانی پروژه PyPI، این قابلیت یک وضعیت کنترلشده توسط نگهدارنده ارائه میدهد که به صاحبان پروژه اجازه میدهد پروژههای خود را بهعنوان بایگانیشده علامتگذاری کنند تا به کاربران نشان دهند که هیچ بهروزرسانی، اصلاح یا نگهداری بیشتری انجام نخواهد شد.
PyPI توصیه میکند که نگهدارندگان (پروژه) پیش از بایگانی کردن یک پروژه، یک نسخه نهایی منتشر کنند تا جزئیات و توضیحاتی درباره دلیل بایگانی پروژه ارائه شود، اگرچه این کار الزامی نیست.
اگر نگهدارندگان پروژه در آینده تصمیم بگیرند دوباره روی پروژه کار کنند، میتوانند آن را از بایگانی خارج کنند و فعالیت را ادامه دهند.
در سیستم جدید، از یک مدل به نام LifecycleStatus استفاده میشود که ابتدا برای مدیریت قرنطینه پروژهها طراحی شده بود. این مدل شامل یک ماشین وضعیت است که به سیستم این امکان را میدهد که بهطور خودکار بین وضعیتهای مختلف پروژه تغییر وضعیت دهد.
زمانی که صاحب پروژه روی گزینه ‘بایگانی پروژه’ در صفحه تنظیمات PyPI کلیک میکند، پلتفرم بهطور خودکار متادیتای خود را بهروزرسانی میکند تا وضعیت جدید را نمایش دهد.
TrailofBits میگوید که برنامههایی برای افزودن وضعیتهای بیشتری برای پروژهها مانند ‘منسوخ شده’، ‘ویژگی کامل’ و ‘بدون نگهداری’ وجود دارد تا ایده واضحتری از وضعیت پروژه به کاربران بدهد.
بنر هشدار به توسعهدهندگان اطلاع میدهد که باید به دنبال وابستگیهای جدید و با نگهداری فعال باشند تا از استفاده از پروژههای قدیمی و ناامن که ممکن است مشکلات امنیتی داشته باشند، جلوگیری کنند.
علاوه بر این، معمولاً اینگونه است که مهاجمان بستههای رها شده را هدف قرار میدهند، پروژههای بدون نگهداری را تصرف کرده و کد مخرب را از طریق یک بهروزرسانی که ممکن است چند سال پس از آخرین بهروزرسانی باشد، تزریق میکنند.
در موارد دیگر، نگهدارندگان زمانی که قصد دارند توسعه پروژه را متوقف کنند، تصمیم به حذف پروژههای خود میگیرند که این میتواند به سناریوهایی مانند حملات ‘ربایش احیاء’ منجر شود. دادن گزینه بایگانی به این نگهدارندگان از نظر امنیتی بسیار بهتر است.
به دلیل ویژگیهای پروژههای متنباز، بسیاری از پروژهها بدون اطلاعرسانی رها میشوند و این باعث میشود که کاربران نتوانند تشخیص دهند که آیا پروژه همچنان نگهداری میشود یا نه.