În data de 10 decembrie 2024, a fost dezvăluită o vulnerabilitate de severitate ridicată (CVE-2024-12254) care afectează CPython. Această vulnerabilitate lovește versiunile Python 3.12.0 și ulterioare, fiind prezentă în modulul asyncio, afectând metoda _SelectorSocketTransport.writelines(). Vulnerabilitatea permite epuizarea memoriei în anumite condiții. Echipa de dezvoltare Python lucrează activ la remedierea acestei probleme.
TL;DR
- Vulnerabilitate critică în Python afectează versiunile MacOS și Linux.
- Aflată în modulul asyncio, metoda _SelectorSocketTransport.writelines() nu gestionează corect memoria.
- Poate duce la epuizarea memoriei.
- Afectează doar utilizatorii Python 3.12.0+ pe MacOS/Linux care folosesc specific modulul asyncio și metoda .writelines().
- Echipa Python propune soluții pentru remedierea acestei vulnerabilități.
Vulnerabilitatea în detaliu
Vulnerabilitatea se datorează manipulării necorespunzătoare a buffering-ului memoriei în metoda writelines() din cadrul modulului asyncio. În mod normal, un „high-water mark” în buffer ar trebui să oprească scrierea și să semnaleze protocolului să golească buffer-ul pentru a evita utilizarea excesivă a memoriei. Totuși, începând cu Python 3.12.0, acest mecanism eșuează în anume scenarii.
Cine este afectat?
Afectează versiunile Python 3.12.0+ pe macOS și Linux, unde protocoalele asyncio care folosesc writelines() pot eșua să golească buffer-ul și să cauzeze epuizarea memoriei. Condițiile specifice pentru manifestarea acestei probleme includ:
- Utilizatorii versiunilor Python 3.12.0 sau ulterioare.
- Sisteme de operare: MacOS sau Linux.
- Utilizarea activă a modulului asyncio cu protocoale.
- Reliance pe metoda .writelines() care a introdus comportamentul zero-copy-on-write începând cu Python 3.12.0.
Dacă aceste criterii nu sunt îndeplinite, utilizarea Python-ului nu este probabil afectată.
Reacția echipei Python
Echipa de dezvoltare Python este activă în rezolvarea problemei printr-o propunere de remediere care este în curs de revizuire. Recomandările pentru utilizatori sunt:
- Monitorizați lista CVE și depozitele oficiale Python pentru actualizări de securitate.
- Evitați versiunile afectate: reveniți la o versiune anterioară Python (între 3.12.0) dacă este posibil.
- Limitați utilizarea metodei writelines(): evitați sau înlocuiți utilizarea acesteia în medii afectate până la remedierea problemei.
Ce pot face utilizatorii?
Utilizatorii sunt sfătuiți să adopte măsuri preventive pentru a se proteja împotriva unor vulnerabilități similare sau atacuri:
- Fiți mereu la curent cu ultimele actualizări de securitate și păstrați software-ul actualizat.
- Evitați utilizarea componentelor software care sunt cunoscute că ar avea vulnerabilități.
- Utilizați monitorizarea în timp real pentru activitățile suspicioase în sisteme și aplicații.