flawopen.com/Teardowns/cve-2021-3156-sudo-baron-samedit
Analisis teknis Baron Samedit (CVE-2021-3156): bagaimana karakter backslash di akhir argumen sudo memungkinkan pengguna lokal mendapatkan akses root instan.
Bayangkan seorang petugas pemroses formulir yang memiliki aturan: garis miring terbalik berarti 'perlakukan karakter berikutnya secara harfiah'. Seseorang menyerahkan formulir yang diakhiri dengan garis miring terbalik, sehingga petugas terus membaca melewati tepi halaman dan menimpa dokumen izin administratif berikutnya.
biner setuidluapan heapeskalasi hak istimewa lokalAkar masalah bermula dari parameter batas yang tidak divalidasi pada sistem open source, yang memungkinkan desinkronisasi status dan bypass kontrol keamanan.
Unprivileged user executes 'sudoedit -s \', bypassing normal argument escaping flags.
The unescape pointer jumps past the null byte delimiter into uninitialized heap memory.
The heap overflow overwrites the sudo_nss service structure in glibc.
Sudo loads an attacker-controlled shared library (/tmp/libnss_x.so.2) as root, granting instant root shell access.
/* VULNERABLE: Unescape loop skips past string termination null byte */
for (to = user_args, from = NewArgv[0]; *from != '\0'; from++) {
if (from[0] == '\\' && !isspace((unsigned char)from[1]))
from++; /* BUG: If from[1] == '\0', loop skips past null terminator! */
*to++ = *from;
}
*to = '\0'; /* Corrupts adjacent heap chunks with root auth structures */
/* FIXED: Explicitly check that from[1] is neither space nor the null byte */
for (to = user_args, from = NewArgv[0]; *from != '\0'; from++) {
if (from[0] == '\\' && from[1] != '\0' && !isspace((unsigned char)from[1]))
from++;
*to++ = *from;
}
*to = '\0';