CVE-2023-24538
Təsvir
Şablonlar geri dırnaqları (`) Javascript sətir ayırıcısı kimi düzgün nəzərə almır və onları gözlənilən şəkildə ekranlaşdırmır (escape etmir). ES6-dan başlayaraq geri dırnaqlardan JS şablon literalları üçün istifadə olunur. Əgər bir şablonda Javascript şablon literalı daxilində Go şablon hərəkəti varsa, həmin hərəkətin məzmunundan literalı sonlandırmaq və Go şablonuna ixtiyari Javascript kodu yerləşdirmək üçün istifadə edilə bilər. ES6 şablon literalları kifayət qədər mürəkkəb olduğu və özləri sətir interpolasiyası edə bildiyi üçün, bu davranışa icazə verməyin aşkar təhlükəsiz yolu olmadığından, onların daxilində Go şablon hərəkətlərinin istifadəsinə sadəcə icazə verilməməsi qərarına gəlindi (məsələn, "var a = {{.}}"). Bu, github.com/google/safehtml ilə eyni yanaşmadır. Düzəlişlə birlikdə, Template.Parse belə şablonlarla qarşılaşdıqda dəyəri 12 olan ErrorCode ilə Xəta (Error) qaytarır. Bu ErrorCode hazırda ixrac olunmayıb (unexported), lakin Go 1.21 buraxılışında ixrac olunacaqdır. Əvvəlki davranışdan asılı olan istifadəçilər bunu GODEBUG bayrağı jstmpllitinterp=1 vasitəsilə yenidən aktivləşdirə bilərlər, lakin burada geri dırnaqların artıq ekranlaşdırılacağı qeyd edilməlidir. Bundan ehtiyatla istifadə edilməlidir.
Necə düzəltmək olar
- golang go1.19.8, 1.20.3 və ya daha yeni versiya
- stdlib1.19.8, 1.20.3 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| golang go | v < 1.19.8, 1.20.0 ≤ v < 1.20.3 | 1.19.8, 1.20.3 |
| stdlibGo | v < 1.19.8, 1.20.0-0 ≤ v < 1.20.3 | 1.19.8, 1.20.3 |
Versiyanızı yoxlayın
Məhsulu seçin və istifadə etdiyiniz versiyanı yazın; versiyanın təsirlənən aralıqda olub-olmadığını görün.
Attack Surface Management
Domenlərinizə bağlı aktivləri, onlarda işləyən texnologiyaları və məlum zəiflikləri bir siyahıda görün.