وصله امنیتی Ruby 4.0.9 چقدر طول کشید تا به دستت برسه؟
خلاصهٔ کاملتر
دنیس پاگمن تو این مقاله تعریف میکنه که میخواسته اپش رو به Ruby 4.0.9 آپدیت کنه، نسخهای که آسیبپذیریهایی که GitLab پیدا کرده بود رو رفع میکرد. ولی ایمیج رسمی داکر هنوز آماده نبود و مجبور شد صبر کنه. نویسنده میگه این صبر میتونه خطرناک باشه: چند ماه پیش یه سایت دولتی Rails فقط هشت ساعت بعد از انتشار وصله ActiveStorage هک شد، و PHP2Shell حتی قبل از اعلام عمومی داشت سوءاستفاده میشد.
نویسنده همه نصبکنندهها و version managerهای سایت ruby-lang.org، بهعلاوه ایمیجهای داکر، سرویسهای CI و هاستینگها رو بررسی کرده و زمان رسیدن 4.0.9 رو از لحظه آپلود tarball سورس (جمعه ۲۳ اکتبر، ساعت 04:04 UTC) اندازه گرفته. سریعترها مال خود تیم Ruby بودن: بسته Snap بعد از ۷ دقیقه و ایمیج rubylang/ruby بعد از ۸ دقیقه. یه بات تعریف ruby-build رو ۲۸ ثانیه بعد از آپلود commit کرد و release اون بعد از ۴۳ دقیقه اومد.
مشکل اصلی ایمیج ruby تو Docker Hub هست، یعنی Docker Official Image که جامعه داکر نگهش میداره، نه تیم Ruby. این ایمیج ۱۵ ساعت و ۵۷ دقیقه طول کشید. Dockerfileی که Rails میسازه از همین ایمیج استفاده میکنه، پس Kamal و Fly.io هم پیشفرض همین رو میگیرن. خود Dockerfile حدود هفت ساعت بعد آپدیت شد و بقیه وقت تو صف بررسی و build مخزن official-images گذشت. این ایمیج حدود ۴۵۰ برابر بیشتر از rubylang/ruby دانلود شده.
بعضی پلتفرمها از این هم کندتر بودن. Google Cloud (برای Cloud Run و App Engine) حدود سه روز و نیم طول کشید و پیشفرضش هنوز 4.0.7 هست. AWS Elastic Beanstalk حدود ۴ روز و AWS Lambda حدود ۴ و نیم روز. در عوض Heroku و پلتفرمهایی که از buildpack اون استفاده میکنن مثل DigitalOcean و Northflank بعد از حدود ۲.۵ ساعت آماده بودن، و Render اصلاً میتونه هر نسخهای رو که از قبل نساخته همون لحظه کامپایل کنه.
توصیه نویسنده اینه که کل مسیر تا production رو از قبل بررسی کنی، چون کندترین بخش (version manager، CI یا محیط production) تعیینکنندهست. آپدیت Ruby، gemها و ایمیج پایه رو با یه بات خودکار کن تا اگه CI سبز بود خودش deploy کنه. و ترجیحاً به runtime آماده یه پرووایدر که دو نسخه عقبه تکیه نکن، بلکه کانتینر خودت رو بساز. آخر هم یادآوری میکنه که بیشتر این ابزارها رو داوطلبها نگه میدارن.
نکات کلیدی:
- Snap و ایمیج rubylang/ruby تیم Ruby بعد از ۷ و ۸ دقیقه نسخه 4.0.9 رو داشتن.
- ایمیج رسمی ruby در Docker Hub که Rails، Kamal و Fly.io پیشفرض استفاده میکنن ۱۵ ساعت و ۵۷ دقیقه طول کشید.
- ruby-build بعد از ۴۳ دقیقه و GitHub Actions setup-ruby روی لینوکس و مک بعد از ۱ ساعت و ۱۲ دقیقه آماده بود.
- Google Cloud حدود ۳.۵ روز، Elastic Beanstalk حدود ۴ روز و Lambda حدود ۴.۵ روز طول کشیدن.
- Debian، Ubuntu، Alpine و Arch تو مخازن رسمیشون اصلاً Ruby 4 ندارن.




