[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#736179: opu: package spip/2.1.1-3squeeze8



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('&lt;', '<', $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&eacute;es &agrave; la racine&nbsp;?',
+ 'info_nom' => 'Nom',
+ 'info_nom_destinataire' => 'Nom du destinataire',
++'info_nom_pas_conforme' => 'les tags html ne sont pas autoris&eacute;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('&lt;', '<', $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&eacute;es &agrave; la racine&nbsp;?',
 'info_nom' => 'Nom',
 'info_nom_destinataire' => 'Nom du destinataire',
+'info_nom_pas_conforme' => 'les tags html ne sont pas autoris&eacute;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


Reply to: