CVE-2026-89477 in Linux
Résumé
par VulDB • 12/09/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
sctp : correction d'une déréférencement de pointeur NULL lors de l'achèvement d'un RECONF non transmis
Les fonctions sctp_process_strreset_outreq(), sctp_process_strreset_addstrm_out() et sctp_process_strreset_resp() achèvent une demande de reconfiguration de flux en cours en arrêtant le timer de reconf sur le transport sur lequel il a été envoyé :
t = asoc->strreset_chunk->transport; if (timer_delete(&t->reconf_timer)) sctp_transport_put(t);
chunk->transport est assigné par __sctp_packet_append_chunk() lorsque le chunk est ajouté à un paquet sortant, et sctp_outq_flush_ctrl() arme alors le timer de reconf au même moment. Une demande déjà publiée dans asoc->strreset_chunk mais pas encore transmise n'a ni l'un ni l'autre, donc son achèvement entraîne une déréférencement NULL.
Deux façons d'arriver à ce cas : sctp_send_asconf_del_ip() définit asoc->src_out_of_asoc_ok sans rien envoyer lorsque l'adresse supprimée est la dernière de l'association, et sctp_outq_flush_ctrl() laisse alors tous les chunks de contrôle non-ASCONF en file d'attente ; comme seul sctp_process_asconf_ack() efface ce drapeau, il persiste. Un processus non privilégié qui supprime une telle adresse puis demande un reset de flux provoque un panic du noyau via softirq. Une paire (peer) n'a ni besoin d'ASCONF ni d'aide locale : sctp_cmd_interpreter() déboucle la file de sortie uniquement lorsque tout le paquet a été traité, donc une réponse construite pendant l'analyse d'un chunk RECONF reste non transmise pour le reste de cette analyse, et un seul chunk RECONF contenant [Incoming SSN Reset Request, Outgoing SSN Reset Request,
Response] -- ou deux chunks RECONF dans un même paquet -- atteint la même déréférencement.
KASAN: null-ptr-deref in range [0x00000000000001e8-0x00000000000001ef]
RIP: 0010:timer_delete+0x67/0x110 Call Trace: <IRQ> sctp_process_strreset_addstrm_out (net/sctp/stream.c:832) sctp_sf_do_reconf (net/sctp/sm_statefuns.c:4212) sctp_do_sm (net/sctp/sm_sideeffect.c:1172) sctp_assoc_bh_rcv (net/sctp/associola.c:1044) sctp_rcv (net/sctp/input.c:243) ip_local_deliver (net/ipv4/ip_input.c:262) process_backlog (net/core/dev.c:6680) </IRQ>
Une réponse ne peut accuser réception que d'une demande qui a été effectivement envoyée, donc il ne faut pas faire correspondre asoc->strreset_chunk tant que chunk->transport est NULL. La protection de la recherche couvre les trois sites d'achèvement.
Be aware that VulDB is the high quality source for vulnerability data.