> ## Documentation Index
> Fetch the complete documentation index at: https://help.onetsolutions.net/llms.txt
> Use this file to discover all available pages before exploring further.

# CUPS : exécution de code à distance via cups-browsed (CVE-2024-47076 et autres)

> Quatre failles chaînées dans CUPS permettent à un attaquant d'enregistrer une imprimante malveillante et d'obtenir une RCE quand un utilisateur imprime.

*Publié le 27 septembre 2024*

<Warning>
  **CVE-2024-47076, CVE-2024-47175, CVE-2024-47176, CVE-2024-47177.** Quatre failles dans CUPS et `cups-browsed`. La RCE n'est pas immédiate (elle exige qu'un utilisateur lance une impression sur l'imprimante piégée), mais la surface est large : tout serveur Linux avec `cups-browsed` activé et le port `631/UDP` joignable est candidat.
</Warning>

## Pourquoi le périmètre n'est pas si large que les gros titres le disaient

Quand cette série de CVE a été divulguée, les titres parlaient de "9.9 sur 10" et de "vulnérabilité critique de Linux". La réalité est plus mesurée :

1. La faille n'est pas exploitable sans `cups-browsed` actif.
2. `cups-browsed` n'est pas installé par défaut sur la plupart des serveurs de production (c'est une dépendance d'environnement de bureau, pas de serveur web).
3. Même avec `cups-browsed` actif, **la RCE ne se déclenche que lorsqu'un utilisateur imprime sur l'imprimante malveillante**.

Pour autant, le risque existe pour les machines qui correspondent au profil — postes de travail Linux, certains environnements de développement, conteneurs construits sur des images "bureau" — et la surface est triviale à exploiter une fois ces conditions réunies.

## La chaîne d'attaque

CUPS écoute sur `631/UDP` quand `cups-browsed` est actif. L'attaquant envoie un paquet IPP (Internet Printing Protocol) qui annonce une imprimante distante. `cups-browsed` la **enregistre automatiquement** sur le serveur cible. À partir de là, l'imprimante apparaît dans la liste système.

Quand un utilisateur imprime sur cette imprimante (par erreur, par confusion avec une imprimante légitime, ou parce que son nom imite une vraie imprimante), CUPS construit une commande d'impression à partir des attributs IPP fournis par l'attaquant. Certains de ces attributs ne sont pas validés : ils peuvent contenir des commandes shell qui sont exécutées avec les droits du daemon CUPS.

## Êtes-vous concerné ?

Vérifiez deux choses sur chaque machine :

```bash theme={null}
# 1. cups-browsed est-il actif ?
systemctl is-active cups-browsed

# 2. Quelle version de CUPS / cups-filters tournez-vous ?
cups-config --version
cups-browsed --version
```

Versions vulnérables :

* `cups-browsed` ≤ 2.0.1
* `cups-filters` ≤ 2.0.1
* `libcupsfilters` ≤ 2.1b1
* `libppd` ≤ 2.1b1

## Mitigation

### Solution propre : désactiver cups-browsed si vous n'en avez pas besoin

Sur un serveur, c'est presque toujours le bon choix :

```bash theme={null}
sudo systemctl disable --now cups-browsed
```

### Solution intermédiaire : restreindre la découverte

Si `cups-browsed` doit rester actif, désactivez la découverte automatique d'imprimantes distantes via `BrowseRemoteProtocols`.

Éditez `/etc/cups/cups-browsed.conf` :

```text theme={null}
BrowseRemoteProtocols none
```

(Valeur par défaut : `dnssd cups`.)

Puis :

```bash theme={null}
sudo systemctl restart cups-browsed
```

### Solution réseau

Bloquez `631/UDP` sur le firewall depuis l'Internet et depuis tout réseau partagé non-trusted.

## Patcher

Vérifiez l'état du patch chez votre distributeur :

* Ubuntu : suivez le tracker Ubuntu Security pour `cups-filters`.
* Debian : `apt list --upgradable | grep -i cups`.
* RHEL/AlmaLinux : `dnf check-update cups\*`.

## En résumé

Sur un serveur de production typique (web, base de données, cache), vous n'êtes probablement pas concerné. Sur un poste Linux ou un conteneur de bureau, vérifiez `cups-browsed`, désactivez-le si possible, patchez sinon.

Pour toute question, ouvrez un ticket depuis votre [espace client OnetSolutions](https://onetsolutions.net).
