Package: release.debian.org Severity: normal User: release.debian....@packages.debian.org Usertags: pu
Hi release team, This update fixes a security issue, but the security team believes it’s not worth a DSA, would you please accept to fix CVE-2013-7303 (#736170) via the next stable point release? Debdiff, and actual patch to ease the review, attached. Regards David -- System Information: Debian Release: jessie/sid APT prefers unstable APT policy: (500, 'unstable'), (500, 'testing'), (500, 'stable'), (500, 'oldstable'), (100, 'experimental') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 3.12-1-rt-amd64 (SMP w/1 CPU core; PREEMPT) Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash
diff -Nru spip-2.1.17/debian/changelog spip-2.1.17/debian/changelog --- spip-2.1.17/debian/changelog 2013-11-02 13:52:42.000000000 -0400 +++ spip-2.1.17/debian/changelog 2014-01-20 14:37:00.000000000 -0400 @@ -1,11 +1,20 @@ +spip (2.1.17-1+deb7u3) wheezy; urgency=medium + + * Document fixed #729172 + * Document CVE in previous changelog entries + * Fix XSS on signature from author [CVE-2013-7303] (Closes: #736170) + + -- David Prévot <taf...@debian.org> Mon, 20 Jan 2014 14:36:37 -0400 + spip (2.1.17-1+deb7u2) wheezy-security; urgency=high * Fix upstream version in previous changelog entry * Backport patches from 2.1.24 - - Fix CSRF on logout - - Fix XSS on author page + - Fix CSRF on logout [CVE-2013-4555] + - Fix XSS on author page [CVE-2013-4556] * Update security screen to 1.1.8 - - Avoid PHP injection in $connect + - Avoid PHP injection in $connect [CVE-2013-4557] + (Closes: #729172) * Update displayed version -- David Prévot <taf...@debian.org> Sat, 02 Nov 2013 13:02:57 -0400 @@ -14,7 +23,7 @@ * Update security screen to 1.1.7, prevent abusive inscription. * Backport patch from 2.1.22: - - fix privilege escalation (Closes: #709674). + - fix privilege escalation (Closes: #709674) [CVE-2013-2118]. -- David Prévot <taf...@debian.org> Sat, 25 May 2013 09:29:32 -0400 diff -Nru spip-2.1.17/debian/patches/fix_CSRF_on_logout.patch spip-2.1.17/debian/patches/fix_CSRF_on_logout.patch --- spip-2.1.17/debian/patches/fix_CSRF_on_logout.patch 2013-11-02 13:08:36.000000000 -0400 +++ spip-2.1.17/debian/patches/fix_CSRF_on_logout.patch 2014-01-19 22:08:33.000000000 -0400 @@ -4,7 +4,7 @@ * ecrire/action/logout.php: Add a confirmation step on logout if there is no token. Origin: upstream, http://core.spip.org/projects/spip/repository/revisions/20874 -Bug-Debian: http://bugs.debian.org/ +Bug-Debian: http://bugs.debian.org/729172 --- a/ecrire/action/logout.php +++ b/ecrire/action/logout.php @@ -15,44 +15,116 @@ diff -Nru spip-2.1.17/debian/patches/fix_XSS_on_author_page.patch spip-2.1.17/debian/patches/fix_XSS_on_author_page.patch --- spip-2.1.17/debian/patches/fix_XSS_on_author_page.patch 2013-11-02 13:52:42.000000000 -0400 +++ spip-2.1.17/debian/patches/fix_XSS_on_author_page.patch 2014-01-19 22:08:33.000000000 -0400 @@ -3,7 +3,7 @@ * prive/formulaires/editer_auteur.php: Do not allow any site URL Origin: upstream, http://core.spip.org/projects/spip/repository/revisions/20880 -Bug-Debian: http://bugs.debian.org/ +Bug-Debian: http://bugs.debian.org/729172 --- a/ecrire/lang/ecrire_fr.php +++ b/ecrire/lang/ecrire_fr.php @@ -491,6 +491,7 @@ diff -Nru spip-2.1.17/debian/patches/fix_XSS_on_signature.patch spip-2.1.17/debian/patches/fix_XSS_on_signature.patch --- spip-2.1.17/debian/patches/fix_XSS_on_signature.patch 1969-12-31 20:00:00.000000000 -0400 +++ spip-2.1.17/debian/patches/fix_XSS_on_signature.patch 2014-01-20 14:35:15.000000000 -0400 @@ -0,0 +1,71 @@ +From: denisb <den...@laposte.net> +Subject: Avoid XSS on signature from author + +* ecrire/inc/filtres.php, ecrire/lang/ecrire_fr.php, + prive/formulaires/editer_auteur.php, + squelettes-dist/formulaires/inscription.php: Avoid XSS on name (signature) + from an author. [CVE-2013-7303] +Origin: upstream, http://core.spip.org/projects/spip/repository/revisions/20972 +Bug-Debian: http://bugs.debian.org/736170 +--- a/ecrire/inc/filtres.php ++++ b/ecrire/inc/filtres.php +@@ -1601,6 +1601,22 @@ + return ($mod?$nb%$mod:0)+$add; + } + ++/** ++ * Vérifie qu'un nom (d'auteur) ne comporte pas d'autres tags que <multi> ++ * ++ * @param string $nom ++ * Nom (signature) proposé ++ * @return bool ++ * - false si pas conforme, ++ * - true sinon ++**/ ++function nom_acceptable($nom) { ++ if (!is_string($nom)) { ++ return false; ++ } ++ $v_nom = str_replace(array('@multi@','@/multi@'), array('<multi>','</multi>'), supprimer_tags(str_replace(array('<multi>','</multi>'), array('@multi@','@/multi@'), $nom))); ++ return str_replace('<', '<', $v_nom) == $nom; ++} + + // Verifier la conformite d'une ou plusieurs adresses email + // retourne false ou la normalisation de la derniere adresse donnee +--- a/ecrire/lang/ecrire_fr.php ++++ b/ecrire/lang/ecrire_fr.php +@@ -489,6 +489,7 @@ + 'info_multi_secteurs' => '... seulement pour les rubriques situées à la racine ?', + 'info_nom' => 'Nom', + 'info_nom_destinataire' => 'Nom du destinataire', ++'info_nom_pas_conforme' => 'les tags html ne sont pas autorisés', + 'info_nom_site' => 'Nom de votre site', + 'info_nom_site_2' => '<b>Nom du site</b> [Obligatoire]', + 'info_url_site_pas_conforme' => 'l\'URL du site n\'est pas valide.', +--- a/prive/formulaires/editer_auteur.php ++++ b/prive/formulaires/editer_auteur.php +@@ -75,9 +75,12 @@ + $auth_methode = ($auth_methode ? $auth_methode : 'spip'); + include_spip('inc/auth'); + include_spip('inc/autoriser'); ++ include_spip('inc/filtres'); + ++ if (!nom_acceptable(_request('nom'))) { ++ $erreurs['nom'] = _T("info_nom_pas_conforme"); ++ } + if ($email = _request('email')){ +- include_spip('inc/filtres'); + // un redacteur qui modifie son email n'a pas le droit de le vider si il y en avait un + if (!autoriser('modifier','auteur',$id_auteur,null,array('email'=>'?')) + AND $GLOBALS['visiteur_session']['id_auteur']==$id_auteur +--- a/squelettes-dist/formulaires/inscription.php ++++ b/squelettes-dist/formulaires/inscription.php +@@ -35,6 +35,8 @@ + + if (!$nom = _request('nom_inscription')) + $erreurs['nom_inscription'] = _T("info_obligatoire"); ++ elseif (!nom_acceptable(_request('nom_inscription'))) ++ $erreurs['nom_inscription'] = _T("ecrire:info_nom_pas_conforme"); + if (!$mail = _request('mail_inscription')) + $erreurs['mail_inscription'] = _T("info_obligatoire"); + diff -Nru spip-2.1.17/debian/patches/series spip-2.1.17/debian/patches/series --- spip-2.1.17/debian/patches/series 2013-11-02 13:52:42.000000000 -0400 +++ spip-2.1.17/debian/patches/series 2014-01-19 22:08:33.000000000 -0400 @@ -5,3 +5,4 @@ fix_privilege_escalation_2.1.21.patch fix_CSRF_on_logout.patch fix_XSS_on_author_page.patch +fix_XSS_on_signature.patch
From: denisb <den...@laposte.net> Subject: Avoid XSS on signature from author * ecrire/inc/filtres.php, ecrire/lang/ecrire_fr.php, prive/formulaires/editer_auteur.php, squelettes-dist/formulaires/inscription.php: Avoid XSS on name (signature) from an author. [CVE-2013-7303] Origin: upstream, http://core.spip.org/projects/spip/repository/revisions/20972 Bug-Debian: http://bugs.debian.org/736170 --- a/ecrire/inc/filtres.php +++ b/ecrire/inc/filtres.php @@ -1601,6 +1601,22 @@ return ($mod?$nb%$mod:0)+$add; } +/** + * Vérifie qu'un nom (d'auteur) ne comporte pas d'autres tags que <multi> + * + * @param string $nom + * Nom (signature) proposé + * @return bool + * - false si pas conforme, + * - true sinon +**/ +function nom_acceptable($nom) { + if (!is_string($nom)) { + return false; + } + $v_nom = str_replace(array('@multi@','@/multi@'), array('<multi>','</multi>'), supprimer_tags(str_replace(array('<multi>','</multi>'), array('@multi@','@/multi@'), $nom))); + return str_replace('<', '<', $v_nom) == $nom; +} // Verifier la conformite d'une ou plusieurs adresses email // retourne false ou la normalisation de la derniere adresse donnee --- a/ecrire/lang/ecrire_fr.php +++ b/ecrire/lang/ecrire_fr.php @@ -489,6 +489,7 @@ 'info_multi_secteurs' => '... seulement pour les rubriques situées à la racine ?', 'info_nom' => 'Nom', 'info_nom_destinataire' => 'Nom du destinataire', +'info_nom_pas_conforme' => 'les tags html ne sont pas autorisés', 'info_nom_site' => 'Nom de votre site', 'info_nom_site_2' => '<b>Nom du site</b> [Obligatoire]', 'info_url_site_pas_conforme' => 'l\'URL du site n\'est pas valide.', --- a/prive/formulaires/editer_auteur.php +++ b/prive/formulaires/editer_auteur.php @@ -75,9 +75,12 @@ $auth_methode = ($auth_methode ? $auth_methode : 'spip'); include_spip('inc/auth'); include_spip('inc/autoriser'); + include_spip('inc/filtres'); + if (!nom_acceptable(_request('nom'))) { + $erreurs['nom'] = _T("info_nom_pas_conforme"); + } if ($email = _request('email')){ - include_spip('inc/filtres'); // un redacteur qui modifie son email n'a pas le droit de le vider si il y en avait un if (!autoriser('modifier','auteur',$id_auteur,null,array('email'=>'?')) AND $GLOBALS['visiteur_session']['id_auteur']==$id_auteur --- a/squelettes-dist/formulaires/inscription.php +++ b/squelettes-dist/formulaires/inscription.php @@ -35,6 +35,8 @@ if (!$nom = _request('nom_inscription')) $erreurs['nom_inscription'] = _T("info_obligatoire"); + elseif (!nom_acceptable(_request('nom_inscription'))) + $erreurs['nom_inscription'] = _T("ecrire:info_nom_pas_conforme"); if (!$mail = _request('mail_inscription')) $erreurs['mail_inscription'] = _T("info_obligatoire");
signature.asc
Description: Digital signature