
Reproducteur autonome pour CVE-2026-90781 : écriture hors limites d'un octet dans alsa-lib __snd_ctl_ascii_elem_id_parse() lors de l'analyse de name= (entre guillemets et sans guillemets)
Reproducteur C autonome pour CVE-2026-90781, une écriture hors limites d'1 octet dans __snd_ctl_ascii_elem_id_parse() d'alsa-lib lors de l'analyse de name= (formes entre guillemets et sans guillemets).
Dans src/control/ctlparse.c (v1.2.16.1 et HEAD de développement antérieur) :
char buf[64];
...
if (size < (int)sizeof(buf)) { // BUG: allows size == 64
*ptr++ = *str;
size++;
}
...
*ptr = '\0'; // writes buf[64] when size == 64
Le chemin numid= était déjà corrigé en sizeof(buf) - 1 ; les deux boucles name= ne l'étaient pas.
gcc -o reproducer reproducer.c
./reproducer
# With AddressSanitizer (recommended to observe the OOB write):
gcc -fsanitize=address -g -o reproducer reproducer.c
./reproducer
WRITE of size 1 at ... Stack right redzone
reproducer.c — reproduit exactement la logique d'analyse vulnérable et corrigéesrc/control/ctlparse.c1e27d63 (chemin numid=)