Package: release.debian.org Severity: normal User: release.debian.org@packages.debian.org Usertags: opu 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 -u spip-2.1.1/debian/changelog spip-2.1.1/debian/changelog
--- spip-2.1.1/debian/changelog
+++ spip-2.1.1/debian/changelog
@@ -1,11 +1,20 @@
+spip (2.1.1-3squeeze8) squeeze; 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 <taffit@debian.org> Mon, 20 Jan 2014 14:42:46 -0400
+
spip (2.1.1-3squeeze7) squeeze-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)
-- David Prévot <taffit@debian.org> Sat, 02 Nov 2013 13:13:30 -0400
@@ -13,7 +22,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]
* fix_XSS_in_variable_name.patch: Document bug number.
-- David Prévot <taffit@debian.org> Sat, 25 May 2013 09:25:46 -0400
diff -u spip-2.1.1/debian/patches/fix_XSS_on_author_page.patch spip-2.1.1/debian/patches/fix_XSS_on_author_page.patch
--- spip-2.1.1/debian/patches/fix_XSS_on_author_page.patch
+++ spip-2.1.1/debian/patches/fix_XSS_on_author_page.patch
@@ -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 -u spip-2.1.1/debian/patches/series spip-2.1.1/debian/patches/series
--- spip-2.1.1/debian/patches/series
+++ spip-2.1.1/debian/patches/series
@@ -20,0 +21 @@
+fix_XSS_on_signature.patch
diff -u spip-2.1.1/debian/patches/fix_CSRF_on_logout.patch spip-2.1.1/debian/patches/fix_CSRF_on_logout.patch
--- spip-2.1.1/debian/patches/fix_CSRF_on_logout.patch
+++ spip-2.1.1/debian/patches/fix_CSRF_on_logout.patch
@@ -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 @@
only in patch2:
unchanged:
--- spip-2.1.1.orig/debian/patches/fix_XSS_on_signature.patch
+++ spip-2.1.1/debian/patches/fix_XSS_on_signature.patch
@@ -0,0 +1,71 @@
+From: denisb <denisb@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
+@@ -1574,6 +1574,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
+@@ -54,9 +54,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");
+
From: denisb <denisb@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");
Attachment:
signature.asc
Description: Digital signature