Linux-kern VFS-kwesbaarheid wat voorregte-eskalasie moontlik maak

'n Kwesbaarheid (CVE-2022-0185) is geïdentifiseer in die lêerstelselkonteks-API wat deur die Linux-kern verskaf word, wat 'n plaaslike gebruiker toelaat om wortelvoorregte op die stelsel te verkry. Die navorser wat die probleem geïdentifiseer het, het 'n demonstrasie van 'n uitbuiting gepubliseer wat jou toelaat om kode as wortel op Ubuntu 20.04 in die verstekkonfigurasie uit te voer. Die uitbuitingskode word beplan om op GitHub geplaas te word binne 'n week nadat die verspreidings 'n opdatering vrygestel het wat die kwesbaarheid regstel.

Die kwesbaarheid bestaan ​​in die legacy_parse_param()-funksie in VFS en word veroorsaak deur 'n versuim om die maksimum grootte van parameters wat verskaf word op lêerstelsels wat nie die lêerstelselkonteks-API ondersteun nie, behoorlik na te gaan. Deur 'n parameter wat te groot is, kan 'n oorloop van die heelgetalveranderlike veroorsaak wat gebruik word om die grootte van die data wat geskryf moet word te bereken - die kode het 'n buffer-oorloopkontrole "if (len > PAGE_SIZE - 2 - grootte)", wat nie werk as die groottewaarde groter is as 4094. vir heelgetaloorloop deur die ondergrens (heelgetalondervloei, wanneer 4096 - 2 - 4095 na ongetekende int gegiet word, is die resultaat 2147483648).

Hierdie fout maak dit moontlik om, wanneer toegang tot 'n spesiaal ontwerpte lêerstelselbeeld verkry word, 'n bufferoorloop te veroorsaak en kerndata te oorskryf wat volg op die toegewese geheue area. Om die kwesbaarheid te ontgin, moet jy CAP_SYS_ADMIN regte hê, d.w.s. administrateur magte. Die probleem is dat 'n onbevoorregte gebruiker sulke toestemmings in 'n geïsoleerde houer kan verkry as die stelsel ondersteuning vir gebruikernaamruimtes geaktiveer het. Gebruikersnaamruimtes is byvoorbeeld by verstek geaktiveer op Ubuntu en Fedora, maar nie geaktiveer op Debian en RHEL nie (tensy houer-isolasieplatforms gebruik word).

Die probleem verskyn sedert Linux-kern 5.1 en is opgelos in gister se opdaterings 5.16.2, 5.15.16, 5.10.93, 5.4.173. Pakketopdaterings wat die kwesbaarheid regstel, is reeds vir RHEL, Debian, Fedora en Ubuntu vrygestel. Die oplossing is nog nie beskikbaar op Arch Linux, Gentoo, SUSE en openSUSE nie. As 'n veiligheidsoplossing vir stelsels wat nie houerisolasie gebruik nie, kan jy die sysctl "user.max_user_namespaces" waarde op 0 stel: echo "user.max_user_namespaces=0" > /etc/sysctl.d/userns.conf # sysctl -p /etc/ sysctl.d/userns.conf

Bron: opennet.ru

Voeg 'n opmerking