پراکسیای که جلوی نصب پکیج آلوده رو میگیره
خلاصهٔ کاملتر
تینکست (Thinkst) ابزار جدیدش، Package Proxy، رو منتشر کرده: یه پراکسی سبک روی Cloudflare Workers که بین توسعهدهنده و رجیستریهای npm، pip، uv و cargo میشینه و قبل از نصب، بستهها رو با چند قاعدهٔ ساده غربال میکنه. کدش هم روی گیتهاب هست و با یه کلیک روی Cloudflare بالا میاد.
تیم تینکست میگه ریسک زنجیرهٔ تأمین دیگه مثل قدیم «نسخهٔ قدیمی آسیبپذیر» نیست. هفت سال پیش پیدا شدن ۱۲ پکیج مخرب روی PyPI خبر بزرگی بود؛ همین اواخر Socket از یه حملهٔ هماهنگ با ۶۳۹ پکیج آلودهٔ npm گزارش داد و خبر خیلی زود فراموش شد. ماجرای Axios هم به گفتهٔ نویسنده زنگ خطر جدی برای خود توسعهدهندهها بود.
ایدهٔ فنی سادهست: پکیجمنیجرها آدرس ایندکس (مثل ایندکس PyPI برای pip) رو از کانفیگ میخونن. کافیه اون آدرس رو به پراکسی بدی. حالا پراکسی همهٔ درخواستهای متادیتا رو میبینه، میفهمه کاربر میخواد چی نصب کنه، و اگه پکیج سیاست رو رد نکنه فقط یه ۴۰۴ برمیگردونه؛ وگرنه خودش بسته رو میگیره و تحویل میده.
چکهای پیشفرضش اینان: پکیج حداقل ۱۰ روز از انتشارش گذشته باشه (چون تجربه نشون داده بکدورها معمولاً تو چند ساعت تا چند روز لو میرن)، روش آپلود پکیج نسبت به قبل عقبگرد نکرده باشه (مهاجمی که حساب نگهدارنده رو میدزده معمولاً مستقیم آپلود میکنه نه از طریق پایپلاین)، بهعلاوهٔ لیست سیاه و لیست سفید. خود تینکست داخلی سختگیرانهتر عمل میکنه: npm پیشفرض بستهست و توسعهدهنده باید درخواست بده تا چیزی به allow list اضافه شه.
نویسنده میگه دلیل انتخاب پراکسی بهجای wrapper دور پکیجمنیجر این بود که پراکسی فقط یه تغییر کانفیگه — نه یه وابستگی جدید روی کلی ماشین، نه تغییر عادت و workflow تیم. مزیت دوم اینه که چکها یکدست میشن: uv گزینهٔ «پکیجهای هفتهٔ اخیر رو نصب نکن» داره ولی pip فقط یه تایماستمپ ثابت میگیره؛ پراکسی این اختلافها رو یکسان میکنه.
تنظیمش هم میتونه در سطح پروژه باشه؛ مثلاً تو pyproject.toml برای uv:
[[tool.uv.index]]
name = "packageproxy"
url = "https://<USERNAME>@package-proxy.corp.dev/pypi"به گفتهٔ تینکست، از وقتی پراکسی رو راه انداختن، حملههای TanStack و Bitwarden و آخرین موج هدفگیری npm از سمت TeamPCP بهشون آسیب نزده — بیشترش فقط بهخاطر همون قاعدهٔ سن پکیج. البته خودشون هم قبول دارن که با تلاش کافی میشه از این چکها رد شد؛ هدف بالا بردن هزینهٔ مهاجمه، نه تضمین صددرصد.
نکات کلیدی:
- Package Proxy یه پراکسی متنباز روی Cloudflare Workers برای npm، pip، uv و cargo
- کار با تغییر آدرس ایندکس انجام میشه؛ نیازی به نصب نرمافزار روی کلاینت نیست
- چکها: حداقل ۱۰ روز سن پکیج، عقبگرد نکردن روش آپلود، لیست سیاه و لیست سفید
- ۱۰ روز مهلت معمولاً کافیه تا بکدور کشف و پکیج از رجیستری حذف شه
- چند حملهٔ اخیر زنجیرهٔ تأمین (TanStack، Bitwarden) با همین قاعدهٔ سن خنثی شده




