
Go ۱.۲۷.۳ و ۱.۲۶.۱۰ چه چیزی را اصلاح میکنند؟
پروژهٔ رسمی Go در ۱۹ اکتبر ۲۰۲۶ نسخههای Go 1.27.3 و Go 1.26.10 را منتشر کرد. طبق تاریخچهٔ رسمی انتشار، هر دو نسخه شامل اصلاحات امنیتی در بستهٔ crypto/x509 هستند؛ بستهای که بخش مهمی از اعتبارسنجی گواهیهای X.۵۰۹، زنجیرهٔ اعتماد و ارتباطات امن در برنامههای Go را پوشش میدهد. این انتشارها از نوع minor revision هستند و تمرکز اصلی آنها اصلاح امنیتی است، نه معرفی تغییر بزرگ زبانی یا API جدید.
برای تیمهایی که سرویسهای HTTPS، کلاینتهای API، سرویسهای gRPC، سامانههای mTLS یا ابزارهای مدیریت گواهی را با Go میسازند، چنین اصلاحی باید در چرخهٔ انتشار جدی گرفته شود. حتی اگر برنامه در ظاهر بدون تغییر کار کند، مسیر اعتبارسنجی گواهی میتواند بخشی از مرز امنیتی سیستم باشد.


چرا crypto/x509 برای سرویسها مهم است؟
بستهٔ crypto/x509 در بسیاری از برنامهها مستقیماً یا از طریق کتابخانههای استاندارد دیگر استفاده میشود. وقتی یک کلاینت Go به سرویس HTTPS متصل میشود، زنجیرهٔ گواهی را بررسی میکند و دربارهٔ معتبر بودن نام میزبان، مرجع صادرکننده و تاریخ اعتبار تصمیم میگیرد. در سناریوهای mTLS، همین لایه برای بررسی گواهی سمت مقابل و گاهی گواهی کلاینت نیز نقش دارد.
به همین دلیل، اصلاح امنیتی این بسته را نباید فقط یک تغییر داخلی در runtime دانست. ریسک واقعی به نحوهٔ استفادهٔ سرویس از گواهیها، تنظیمات RootCAs، گواهیهای خصوصی سازمان و نسخهٔ Go در محیط build و production وابسته است. تیم باید release note رسمی را بخواند و مشخص کند کدام شاخهٔ پشتیبانیشده را استفاده میکند.
کدام نسخه را نصب کنیم؟
اگر پروژه روی شاخهٔ Go ۱.۲۷ است، مقصد بهروزرسانی Go 1.27.3 است. اگر هنوز روی شاخهٔ Go ۱.۲۶ میمانید، Go 1.26.10 نسخهٔ اصلاحشدهٔ همان شاخه است. انتخاب Go 1.27.3 برای سرویسهای شاخهٔ جدیدتر باید همراه با بررسی سازگاری dependencyها و image پایه انجام شود. تاریخچهٔ رسمی Go نشان میدهد که هر major release تا زمانی پشتیبانی میشود که دو major release جدیدتر منتشر نشده باشد و اصلاحات امنیتی برای شاخههای پشتیبانیشده بهصورت minor revision ارائه میشوند.
قبل از انتخاب نسخه، خروجی go version را در لپتاپ، runnerهای CI، imageهای Docker و سرورهای production بررسی کنید. گاهی نسخهٔ محلی بهروزرسانی شده است، اما image پایه یا runner قدیمی هنوز نسخهٔ آسیبپذیر را استفاده میکند. کافی نیست که فقط فایل go.mod را بررسی کنید؛ نسخهٔ toolchain و digest image نیز باید در زنجیرهٔ build قابل ردیابی باشد.
چکلیست ارتقای امن Go ۱.۲۷.۳ و ۱.۲۶.۱۰
۱. فهرست سرویسها، workerها، ابزارهای خط فرمان و imageهایی را که با Go ساخته شدهاند تهیه کنید. ۲. نسخهٔ واقعی compiler و toolchain را با go version در CI و production ثبت کنید. ۳. شاخهٔ پشتیبانیشدهٔ پروژه را تعیین کنید و به Go ۱.۲۷.۳ یا Go ۱.۲۶.۱۰ ارتقا دهید. ۴. تستهای HTTPS، proxy، mTLS، اعتبارسنجی زنجیره و اتصال به سرویسهای داخلی را اجرا کنید. ۵. imageهای Docker و runnerهای CI را بازسازی کنید و نسخهٔ جدید را در artifact ثبتشده نگه دارید. ۶. لاگ خطاهای TLS و تغییرات رفتار اعتبارسنجی را در محیط staging زیر نظر بگیرید. ۷. پس از rollout مرحلهای، مقدار نسخه را در inventory و مستندات عملیات بهروزرسانی کنید.
اگر پروژه از گواهیهای سازمانی یا CA سفارشی استفاده میکند، تست را با همان زنجیرهٔ واقعی انجام دهید. همچنین تغییرات را با خاموشکردن موقت بررسیهای TLS یا استفاده از InsecureSkipVerify پنهان نکنید؛ این کار مسئلهٔ سازگاری را حل نمیکند و سطح حمله را افزایش میدهد. هر خطای جدید در handshake باید علتیابی شود، نه اینکه با حذف اعتبارسنجی کنار گذاشته شود.
آیا این بهروزرسانی را میتوان به تعویق انداخت؟
برای سرویسهای عمومی، APIهای حساس، سامانههای پرداخت و ارتباطات بینسرویسی، بهتر است ارتقا در اولین چرخهٔ کنترلشده انجام شود. اگر اجرای فوری ممکن نیست، ابتدا exposure سرویس، مسیرهای TLS و مدت زمان تأخیر را ثبت کنید و یک زمانبندی مشخص برای rollout داشته باشید. تست روی staging، canary و rollback آماده کمک میکند اصلاح امنیتی بدون ایجاد اختلال گسترده انجام شود.
در جمعبندی، Go ۱.۲۷.۳ و ۱.۲۶.۱۰ انتشارهای امنیتی مهمی برای پروژههایی هستند که به crypto/x509 و ارتباطات مبتنی بر گواهی تکیه دارند. نسخهٔ شاخهٔ مورد استفاده را تعیین کنید، همهٔ محیطهای build و اجرا را همسانسازی کنید و قبل از rollout، رفتار TLS و mTLS را با زنجیرهٔ واقعی گواهیها بسنجید. اگر شاخهٔ پروژه مشخص نیست، بررسی را با go version شروع کنید و سپس مسیر ارتقا به Go 1.27.3 یا نسخهٔ متناظر را تعیین کنید.
برای آشنایی با خدمات توسعه و اتوماسیون تکتاز، صفحهٔ خدمات طراحی و توسعه وب تکتاز را ببینید. جزئیات نسخهها و اصلاحات در تاریخچهٔ رسمی انتشار Go منتشر شده است.
منبع
پروژهٔ رسمی Go، Release History، انتشارهای ۱۹ اکتبر ۲۰۲۶.





