Saadaval on paranduste vÀljalasked programmeerimiskeele Python 3.7.10 ja 3.6.13, kus on kÔrvaldatud haavatavus (CVE-2021-3177), mis vÔib viia koodi tÀitmiseni, kui töödeldakse kontrollimata ujukomaarve kÀsitlejates, mis kutsuvad C keeles funktsioone vÀlja ctypes mehhanismi kaudu. Probleem puudutab ka Python 3.8 ja 3.9 haru, kuid nende jaoks on uuendused hetkel kandidaadid vÀljalaskeks (vÀljalaskmine on planeeritud 1. mÀrtsiks).
Probleem tuleneb puhversĂŒsteemi ĂŒlemÀÀrast tĂ€itmist ctypes-funktsioonis PyCArg_repr(), kuna sprintf'i kasutatakse ohustatult. TĂ€psemalt, tĂŒhi 256-baidine staatiline puhver ("char buffer[256]") eraldati tulemuse töötlemiseks, mis tuli pindala teisendamisest 'sprintf(buffer, "", self->tag, self->value.b)', samas kui tulemus vĂ”is ĂŒletada seda vÀÀrtust. Rakenduste haavatavuse kontrollimiseks vĂ”ib proovida edastada vÀÀrtust "1e300", mis c_double.from_param meetodiga töötlemisel pĂ”hjustab tĂ”rke, kuna tulemuseks olev arv sisaldab 308 numbrit ja ei mahu 256-baidisesse puhvrisse. Probleemse koodi nĂ€ide: import ctypes; x = ctypes.c_double.from_param(1e300); repr(x)
Probleem jÀÀb lahendamata Debianis, Ubuntuâs ja FreeBSDâs, kuid on juba kĂ”rvaldatud Arch Linuxis, Fedoral ja SUSE-s. RHEL-is ei avaldu haavatavus pakettide koostamise tĂ”ttu FORTIFY_SOURCE reĆŸiimis, mis takistab sarnaseid puhversĂŒsteemi ĂŒlemÀÀraseid tĂ€itmisi stringi funktsioonides.
Allikas: opennet.ru
