Grâce au soutien de nombreuses sociétés, j’ai été payé pour travailler (au moins) 11h sur Debian LTS ce mois-ci.
J’ai commencé par opérer un tri important dans le systèm de suivi des alertes sécurité (si vous souhaitez aider, les instructions se trouvent ici), car j’ai remarqué que la liste dla-needed.txt (qui contient la liste des paquets nécessitant une mise à jour de sécurité pour Debian Squeeze LTS) ne contenait pas un certain nombre de paquets qui pourtant avaient des vulnérabilités connues dans oldstable.
J’ai poussé in fine 23 commits dans le dépôt subversion de suivi des alertes sécurité. Je n’en présenterai pas le détail tout le temps mais, pour une fois, il est intéressant que vous puissiez vous faire une idée du travail que cela représente :
- J’ai passé en revue les patchs des vulnérabilités CVE-2014-0231, CVE-2014-0226, CVE-2014-0118 et CVE-2013-5704, et j’ai confirmé que toutes affectaient la version d’apache2 présente dans Squeeze. J’ai ajouté par la suite apache2 au fichier dla-needed.txt.
- J’ai passé en revue la vulnérabilité CVE-2014-6610 concernant asterisk et j’ai marqué la version présente dans Squeeze comme non affectée, dans la mesure où le fichier présentant la faille n’existe pas dans cette version (ce qui a nécessité d’inspecter d’autres fichiers à la recherche de cette fonctionnalité particulière, qui aurait pu y être déplacée à la faveur d’une réorganisation des fichiers ou de modifications internes similaires).
- J’ai passé en revue la vulnérabilité CVE-2014-3596 (Apache Axis) et j’ai corrigé l’entrée mentionnant sa correction dans unstable. J’ai confirmé qu’elle affectait la version présente dans Squeeze, et l’ai ajouté au fichier dla-needed.txt.
- Même chose pour la vulnérabilité CVE-2012-6153 affectant commons-httpclient.
- J’ai passé en revue la vulnérabilité CVE-2012-5351 et ajouté un lien vers le ticket amont.
- J’ai passé en revue les vulnérabilités CVE-2014-4946 et CVE-2014-4945 concernant php-horde-imp/horde3, ajouté des liens vers les patchs amont et marqué les versions présentes dans Squeeze comme non affectées, dans la mesure où ces failles proviennent de fichiers javascript absents de ces versions.
- J’ai passé en revue la vulnérabilité CVE-2012-3155 affectant glassfish et fus vraiment ennuyé par le manque d’informations la concernant. J’ai donc commencé une discussion sur la liste debian-lts pour voir si ce paquet ne devait pas être marqué comme non supporté pour les mises à jour de sécurité. Il semble que nous n’allons marquer qu’un seul binaire comme non supporté… celui contenant le serveur d’applications touché par les vulnérabilités, le reste étant toujours requis pour compiler de nombreux paquets java.
- J’ai passé en revue de nombreuses vulnérabilités CVE affectant dbus, drupal6, eglibc, kde4libs, libplack-perl, mysql-5.1, ppp, squid et fckeditor, et ajouté ces paquets au fichier dla-needed.txt.
- J’ai passé en revue les vulnérabilités CVE-2011-5244 et CVE-2011-0433 affectant evince et suis parvenu à la conclusion que ces dernières avaient déjà été corrigées dans la version 2.30.3-2+squeeze1. Je les ai donc marquées comme corrigées.
- J’ai supprimé graphicsmagick de la liste de dla-needed.txt car la seule vulnérabilité CVE l’affectant a été marquée comme no-dsa (ce qui signifie que nous estimons qu’une mise à jour de sécurité n’est pas requise, habituellement parce que le problème est mineur et/ou que sa correction aurait plus de chances d’introduire des régressions que d’aider).
- J’ai créé quelques rapports de bogues lorsque ceux-ci étaient manquants : n°762789 concernant ppp, n°762444 concernant axis.
- J’ai marqué un grand nombre de vulnérabilités CVE affectant qemu-kvm et xen comme « en fin de vie » dans Squeeze, puisque ces paquets ne sont actuellement plus supportés dans Debian LTS.
- J’ai passé en revue la vulnérabilité CVE-2012-3541 et, dans la mesure où le rapport entier n’est pas très clair, j’ai envoyé un email à l’auteur amont. Cette discussion m’a conduit à marquer ce bogue comme no-dsa, car l’impact semble être limité à une divulgation d’informations uniquement. J’ai invité l’auteur amont à continuer cette discussion directement dans le ticket du bugzilla de RedHat.
Et lorsque je dis « passé en revue », c’est un raccourci derrière lequel le processus suivant se cache :
- Recherche d’une explication claire de la vulnérabilité, d’une liste des versions affectées, et des patchs pour les versions que nous avons dans Debian, aux endroits suivants:
- La page Debian de suivi des vulnérabilités CVE.
- L’entrée associée dans le système de suivi des bogues Debian (s’il y en a un).
- La description de la vulnérabilité CVE sur cve.mitre.org, et les pages qui y sont référencées.
- L’entrée du bugzilla de RedHat pour la vulnérabilité CVE (ce qui implique souvent le téléchargement du RPM source depuis CentOS, afin d’extraire le patch qu’ils ont utilisé).
- Le dépôt git amont et parfois certaines pages dédiées à la sécurité sur le site web amont.
- Lorsque cela n’a pas été suffisant pour les versions que nous avons dans Debian (et c’est malheureusement souvent le cas), cela passe par le téléchargement du paquet source Debian et la recherche dans les sources des anciennes versions du code problématique (en partant de l’hypothèse qu’on peut l’identifier depuis le patch dont on dispose pour les versions plus récentes).
Le tri des vulnérabilités CVE représente presque la moitié du processus en général : une fois que vous savez que vous êtes affectés et que vous disposez d’un patch, le chemin vers la publication d’une mise à jour est relativement simple (parfois cela requiert quand même un travail de rétroportage du patch).
Lorsque j’en ai eu fini avec la première passe de triage, j’avais déjà dépassé les 11 heures payées mais je me suis occupé de préparer la mise à jour de sécurité pour python-django. Thorsten Alteholz avait commencé le travail mais s’est retrouvé bloqué à l’étape du rétroportage des patchs. Comme je suis co-mainteneur du paquet, j’ai pris le relai et fini le travail, pour le publier sous la référence DLA-65-1.
Ceci est une traduction de mon article My Debian LTS report for September contribuée par Weierstrass01.