Yon vilnerabilite nan VFS nwayo Linux ki pèmèt ou ogmante privilèj ou yo

Yo te idantifye yon vilnerabilite (CVE-2022-0185) nan Filesystem Context API ki bay pa nwayo Linux la, ki pèmèt yon itilizatè lokal jwenn privilèj rasin sou sistèm nan. Chèchè ki te idantifye pwoblèm nan te pibliye yon demonstrasyon sou yon exploit ki pèmèt ou egzekite kòd kòm rasin sou Ubuntu 20.04 nan konfigirasyon default la. Kòd eksplwatasyon an te planifye pou afiche sou GitHub nan yon semèn apre distribisyon yo pibliye yon aktyalizasyon ki korije vilnerabilite a.

Vilnerabilite a egziste nan fonksyon legacy_parse_param() nan VFS epi li lakòz yon echèk pou tcheke gwosè maksimòm paramèt yo bay sou sistèm dosye ki pa sipòte API Filesystem Context. Pase yon paramèt ki twò gwo ka lakòz yon debòde nan varyab nonb antye relatif yo itilize pou kalkile gwosè done yo dwe ekri - kòd la gen yon chèk debòde tanpon "si (len > PAGE_SIZE - 2 - gwosè)", ki pa fè sa. travay si valè gwosè a pi gran pase 4094. pou nonb antye relatif debòde nan limit ki pi ba a (n antye underflow, lè jete 4096 - 2 - 4095 nan unsigned int, rezilta a se 2147483648).

Erè sa a pèmèt, lè w ap jwenn aksè nan yon imaj sistèm fichye ki fèt espesyalman, lakòz yon debòde tanpon ak kouvri done nwayo apre zòn memwa atribye ba a. Pou eksplwate vilnerabilite a, ou dwe gen dwa CAP_SYS_ADMIN, i.e. pouvwa administratè. Pwoblèm lan se ke yon itilizatè ki pa gen privilèj ka jwenn otorizasyon sa yo nan yon veso izole si sistèm lan gen sipò pou espas non itilizatè yo aktive. Pou egzanp, espas non itilizatè yo aktive pa default sou Ubuntu ak Fedora, men yo pa aktive sou Debian ak RHEL (sòf si yo itilize platfòm izolasyon veso).

Pwoblèm nan te parèt depi Linux Kernel 5.1 e li te fikse nan mizajou yè a 5.16.2, 5.15.16, 5.10.93, 5.4.173. Mizajou pake ki ranje vilnerabilite a deja pibliye pou RHEL, Debian, Fedora, ak Ubuntu. Ranje a poko disponib sou Arch Linux, Gentoo, SUSE ak openSUSE. Kòm yon solisyon sekirite pou sistèm ki pa sèvi ak izolasyon veso, ou ka mete valè sysctl "user.max_user_namespaces" a 0: echo "user.max_user_namespaces=0" > /etc/sysctl.d/userns.conf # sysctl -p /etc/ sysctl.d/userns.conf

Sous: opennet.ru

Add nouvo kòmantè