Vundebleco en la IPv6-stako de la Linukso-kerno kiu permesas foran kodekzekuton

Informoj estis malkaŝitaj pri la vundebleco CVE-2023-6200) en la reto-stako de la Linukso-kerno, kiu, en certaj cirkonstancoj, permesas al atakanto de loka reto atingi la ekzekuton de sia kodo sendante speciale desegnitan ICMPv6-pakaĵon kun RA (Router Advertisement) mesaĝo celita reklami informojn pri la enkursigilo.

La vundebleco nur povas esti ekspluatata de la loka reto kaj aperas en sistemoj kun IPv6-subteno ebligita kaj la sysctl-parametro "net.ipv6.conf.<network_interface_name>.accept_ra" aktiva (eblas kontrolita per la komando "sysctl net.ipv6.conf". | grep accept_ra") , kiu estas malebligita defaŭlte en RHEL kaj Ubuntu por eksteraj retaj interfacoj, sed ebligita por la loopback-interfaco, kiu permesas atakon de la sama sistemo.

La vundebleco estas kaŭzita de raskondiĉo kiam la rubkolektisto prilaboras malfreŝajn fib6_info-rekordojn, kiuj povas konduki al aliro al jam liberigita memorareo (uzo-post-libera). Kiam vi ricevas ICMPv6-pakaĵeton kun enkursigilo reklammesaĝo (RA, Router Advertisement), la retstako nomas la funkcion ndisc_router_discovery(), kiu, se la RA-mesaĝo enhavas informojn pri la itinervivdaŭro, vokas la funkcion fib6_set_expires() kaj plenigas la gc_link. strukturo. Por purigi malnoviĝintajn enskribojn, uzu la funkcion fib6_clean_expires(), kiu forigas la enskribon en gc_link kaj purigas la memoron uzatan de la strukturo fib6_info. En ĉi tiu kazo, estas certa momento kiam la memoro por la fib6_info strukturo jam estis liberigita, sed la ligo al ĝi daŭre estas en la gc_link strukturo.

La vundebleco aperis ekde branĉo 6.6 kaj estis riparita en versioj 6.6.9 kaj 6.7. La stato de ripari la vundeblecon en distribuoj povas esti taksita sur ĉi tiuj paĝoj: Debian, Ubuntu, SUSE, RHEL, Fedora, Arch Linux, Gentoo, Slackware. Inter la distribuoj, kiuj sendas pakaĵojn kun la 6.6-kerno, ni povas noti Arch Linux, Gentoo, Fedora, Slackware, OpenMandriva kaj Manjaro; en aliaj distribuoj, eblas ke la ŝanĝo kun eraro retroportu en pakaĵojn kun pli malnovaj kernaj branĉoj (por ekzemple, en Debian estas menciite ke la pakaĵo kun kerno 6.5.13 estas vundebla, dum la problema ŝanĝo aperis en la branĉo 6.6). Kiel sekureca solvo, vi povas malŝalti IPv6 aŭ agordi la parametrojn "net.ipv0.conf.*.accept_ra" al 6.

fonto: opennet.ru

Aldoni komenton