CVE-2026-60074
Açıklama
Date::Manip'in 7.00 sürümüne kadar olan Perl sürümleri, check içindeki sayısal aralık testlerini geçen ASCII dışı ondalık rakamlar aracılığıyla bozuk tarihler döndürür. Ayrıştırma düzenli ifadeleri yıl, ay ve günü `\d` kısayoluyla yakalar; bu kısayol bir karakter dizesinde yalnızca `[0-9]` ile değil, tüm Unicode ondalık rakam özelliği `\p{Nd}` ile eşleşir. Date::Manip::Base::check daha sonra yakalanan alanları yalnızca sayısal karşılaştırmalarla doğrular (`$y<1 || $y>9999`, `$m<1 || $m>12`, `$d<1 || $d>$days`) ve _parse_check sayısallaştırılmış alanları (`$y+0`) saklar. Perl bir dizeyi ASCII rakamı olmayan ilk karakterde keser, bu nedenle baştaki karakterleri ASCII rakamı olan bir alan aralık içindeki bir öneke sayısallaşır ve her testi karşılar: üç ASCII rakamı ve ardından U+0664 ARABIC-INDIC DIGIT FOUR içeren bir yıl alanı 202'ye sayısallaşır ve 0202 yılını verir; ay veya gün alanındaki bir ASCII dışı rakam da bu alanları aynı şekilde kaydırır. Saat, dakika ve saniye alanları açık ASCII karakter sınıflarıyla (`0?[0-9]`, `[0-5][0-9]`) eşleşir ve kaymaz, ancak kesirli saat veya dakika alanındaki bir ASCII dışı rakam kesri keser. Güvenilmeyen bir karakter dizesini ParseDate() veya Date::Manip::Date->parse() işlevine geçiren her çağıran, ayrıştırdığı dizeden farklı bir tarihi ayrıştırma hatası olmadan geri alabilir. Ayrıştırılan tarihin son kullanma kontrolü veya saklama penceresi gibi mantığı belirlediği durumlarda kayma fark edilmez.
Nasıl düzeltilir
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| Date-Manip | v ≤ 7.00 | — |
Sürümünüzü kontrol edin
Ürünü seçin ve kullandığınız sürümü yazın; sürümün etkilenen aralıkta olup olmadığını görün.
Attack Surface Management
Alan adlarınıza bağlı varlıkları, bu varlıklarda çalışan teknolojileri ve bilinen zafiyetleri tek listede görün.