近日,Qualys研究团队公开披露了在Polkit的pkexec中发现的一个权限提升漏洞,也被称为PwnKit。该漏洞是由于pkexec无法正确处理调用参数,从而将环境变量作为命令执行,任何非特权本地用户可通过此漏洞获取root权限。目前该漏洞PoC已公开。 具有任意用户权限的攻击者都可以在默认配置下通过修改环境变量来利用此漏洞,从而获得受影响主机的root权限。 Polkit预装在CentOS、Ubuntu、Debian、Redhat、Fedora、Gentoo、Mageia等多个Linux发行版上,所有存在Polkit的Linux系统均受影响。 以下为安全版本CentOS系列:CentOS6:polkit0。9611。el610。2CentOS7:polkit0。11226。el79。1CentOS8。0:polkit0。11513。el85。1CentOS8。2:polkit0。11511。el82。2CentOS8。4:polkit0。11511。el84。2Ubuntu系列:Ubuntu20。04LTS:policykit10。10526ubuntu1。2Ubuntu18。04LTS:policykit10。10520ubuntu0。18。04。6Ubuntu16。04ESM:policykit10。10514。1ubuntu0。5esm1Ubuntu14。04ESM:policykit10。1054ubuntu3。14。04。6esm1查看系统是否存在CVE20214034漏洞rpmqapolkitpolkit0。11511。el8。x8664 注意:版本号必须完全一致,否则还是存在漏洞。最好的办法是通过代码验证,验证代码库地址:https:github。comberdavCVE20214034通过代码进行漏洞验证gitclonehttps:github。comberdavCVE20214034。gitCloningintoCVE20214034。。。remote:Enumeratingobjects:64,done。remote:Countingobjects:100(6464),done。remote:Compressingobjects:100(4040),done。remote:Total64(delta28),reused52(delta22),packreused0Unpackingobjects:100(6464),15。13KiB860。00KiBs,done。 切换到源代码目录,编译,运行,输入命令whami可以看到当前用户已经变成了root。 事实证明确实存在此漏洞!〔jupiterlocalhost〕cdCVE20214034〔jupiterlocalhostCVE20214034〕lscve20214034。ccve20214034。shdryrunLICENSEMakefilepwnkit。cREADME。md〔jupiterlocalhostCVE20214034〕makeccWallsharedfPICopwnkit。sopwnkit。cccWallcve20214034。cocve20214034echomoduleUTF8PWNKITpwnkit1gconvmodulesmkdirpGCONVPATH。cpusrbintrueGCONVPATH。pwnkit。so:。〔jupiterlocalhostCVE20214034〕。cve20214034sh4。4whoamiroot修复 以下命令在RockyLinux8。5上验证,可以修复CVE20214034漏洞yumcleanallyummakecacheyumupdatepolkitypolkit0。11513。el85。1。x8664 命令的含义 yumcleanall:清除所有的缓存信息,包括packages、metadata、headers,这个命令相当于执行了下面三条命令yumcleanpackagesyumcleanmetadatayumcleanheaders yummakecache:生成缓存 此时再执行验证代码,可以发现已经无法提升权限。。cve20214034pkexecversionhelpdisableinternalagent〔userusername〕〔PROGRAM〕〔ARGUMENTS。。。〕Seethepkexecmanualpageformoredetails。Reportbugsto:http:lists。freedesktop。orgmailmanlistinfopolkitdevelpolkithomepage:http:www。freedesktop。orgwikiSoftwarepolkit 注意:在某些CentOS8版本中,执行yumupdatepolkity之后,polkit的版本号显示为:polkitlibs0。11512。el8。x8664,经过验证,此版本仍然存在漏洞。此时只能通过下面的临时缓解措施解决。临时缓解措施 CentOS8操作系统可能确实无法通过yumupdatepolkity的方法修复漏洞,这是因为CentOS8已经于2021年12月31日停止更新并停止维护(EOL)。 那么只能通过临时缓解措施解决了。chmod0755usrbinpkexec 缓解之前的statusrbinpkexecFile:usrbinpkexecSize:29032Blocks:64IOBlock:4096regularfileDevice:fd01h64769dInode:264437Links:1Access:(4755rwsrxrx)Uid:(0root)Gid:(0root)Access:2022012515:48:21。0000000000500Modify:2022012515:48:21。0000000000500Change:2022012923:58:54。7176053440500Birth: 缓解之后的statusrbinpkexecFile:usrbinpkexecSize:29072Blocks:64IOBlock:4096regularfileDevice:fd00h64768dInode:138432Links:1Access:(0755rwxrxrx)Uid:(0root)Gid:(0root)Access:2022013012:50:04。0779152000800Modify:2021060221:05:51。0000000000800Change:2022013012:49:48。6959152000800Birth: 变化在于文件usrbinpkexec的权限由之前的4755变成了0755参考https:cloud。tencent。comdeveloperarticle1939701验证代码:https:github。comberdavCVE20214034 本次测试环境在阿贝云免费云服务器(https:www。abeiyun。com)上进行,阿贝云目前正在进行免费虚拟主机和免费云服务器体验活动,感兴趣的可以试试。