
Script shell qui construit des paquets .deb de noyau Ubuntu corrigés contenant le correctif kfree_rcu amont pour la vulnérabilité use-after-free IPv4 CVE-2026-98432.
build-patched-kernel.sh construit des paquets .deb du noyau Ubuntu qui incluent le
correctif amont pour CVE-2026-98432 :
e3f33b0a1d89 "ipv4: free inet_opt and ireq_opt after an RCU grace period"
Le bogue est un use-after-free dans ip_options_build(). Un CPU peut encore être
en train d'envoyer un SYNACK pendant qu'un autre libère les options IPv4 d'un socket TCP. Le correctif
remplace deux appels kfree() par kfree_rcu(), dans net/ipv4/af_inet.c et
net/ipv4/tcp_ipv4.c.
uname -r si aucun
n'est fourni (par ex. 6.8.0-45-generic).deb-src et installe le compilateur et les outils de compilation.apt-get source. Si l'archive ne contient plus cette version, il se rabat
sur pull-lp-source depuis Launchpad. Il installe ensuite les dépendances de compilation.kfree_rcu() n'accepte pas NULL, il ajoute
une vérification de NULL.+cve202698432.1 à la version du paquet, afin que les nouveaux paquets
remplacent les paquets de l'archive avec le même ABI.debian/rules d'Ubuntu et copie les fichiers .deb dans
./debs-<version>/.Relancer le script réutilise les sources téléchargées et ne les corrige pas deux fois.
Sur la machine Ubuntu elle-même (à exécuter en root ou avec sudo) :
./build-patched-kernel.sh # kernel from uname -r
./build-patched-kernel.sh 6.8.0-45-generic # a specific kernel
Dans Docker, utilisez la version d'Ubuntu qui correspond au noyau (noble pour 6.8,
jammy pour 5.15). Passez la version explicitement, car uname -r à l'intérieur d'un
conteneur affiche le noyau de l'hôte :
docker run --rm -v "$PWD":/work -w /work -e WORKDIR=/build ubuntu:24.04 \
./build-patched-kernel.sh 6.8.0-45-generic
WORKDIR=/build conserve les sources du noyau à l'intérieur du conteneur. Cela est nécessaire
lorsque le répertoire monté est insensible à la casse, comme sur macOS. Les autres paramètres
(OUTDIR, LOCAL_SUFFIX, SRC_PACKAGE/SRC_VERSION, JOBS) sont décrits
en haut du script.
sudo apt install ./debs-<version>/linux-image-unsigned-<version>_*.deb \
./debs-<version>/linux-modules-<version>_*.deb \
./debs-<version>/linux-modules-extra-<version>_*.deb \
./debs-<version>/linux-headers-*.deb
sudo reboot
L'image du noyau est non signée et remplace le paquet signé linux-image-<version>.
Si Secure Boot est activé, signez l'image avec votre propre clé MOK ou
désactivez Secure Boot.