Mae clytiau Perl 5.40.2 a 5.38.4 wedi'u cyhoeddi, gan fynd i'r afael â gwendid (CVE-2024-56406) sy'n achosi gorlif byffer wrth drawslythrennu nodau nad ydynt yn ASCII wedi'u fformatio'n arbennig gan ddefnyddio'r gweithredwr "tr/../../". Mae'n bosibl manteisio ar y gwendid hwn i weithredu cod personol ar y system. Mae'r broblem wedi bod yn bresennol mewn datganiadau Perl sefydlog ers 2021 ac mae'n effeithio ar Perl 5.34, 5.36, 5.38, a 5.40. Gallwch olrhain cynnydd clytio'r dosraniadau hyn ar y tudalennau canlynol: Debian, Ubuntu, Fedora, Arch, FreeBSD. Nid yw dosraniadau sy'n seiliedig ar RHEL 9, SUSE 15, ac openSUSE Leap 15.6 yn agored i niwed oherwydd eu bod yn cynnwys fersiynau Perl 5.32 a 5.26.
Mae'r bregusrwydd yn effeithio ar raglenni sy'n defnyddio data allanol di-ymddiried ar ochr chwith y gweithredwr "tr", sy'n pennu newidyn gyda data ar gyfer disodli nodau (er enghraifft, "$external_string =~ tr/a/b/"). Yn y swyddogaeth S_do_trans_invmap() sy'n darparu gwaith y gweithredwr, wrth brosesu rhai beit nad ydynt yn ASCII, cyrchir cof y tu allan i'r byffer a neilltuwyd. Mae'r gorlif yn digwydd oherwydd gall rhai dilyniannau beit yn y set ddata wreiddiol gael eu trosi i ddilyniannau UTF-8, sydd angen dau beit yn lle un.
Yn arbennig, cododd y bregusrwydd ar ôl i newid gael ei ychwanegu yn 2020 a ddileodd y gwiriad ychwanegol am ddyraniad cof digonol o dan yr esgus bod talgrynnu'r maint yn ddigonol wrth gyfrifo'r maint. I wirio am y bregusrwydd, gallwch redeg y cod: perl -e '$_ = «\x{FF}» x 1000000; tr/\xFF/\x{100}/;' Gwall segmentu (craidd wedi'i ddympio)
Ffynhonnell: opennet.ru
