r21772 - spip/ecrire/genie

Author: cedric@yterium.com
Date: 2014-11-02 18:58:59 +0100 (dim, 02 nov 2014)
New Revision: 21772

Log:
Puisqu'on a un ecran de securite qui permet une securisation quasi-systematique de SPIP en un seul fichier, utilisons le pour offrir une protection automatiquement mise a jour (c'est la bonne pratique en terme de sécurité). Reste a fournir une URL sur spip.net pour maitriser la diffusion des mises à jour automatiques (utilise l'URL de la zone provisoirement)

Modified:
   spip/ecrire/genie/mise_a_jour.php

Details: http://core.spip.org/projects/spip/repository/revisions/21772

D'ailleurs, tant pour l'écran que pour la diffusion de la dernière version en téléchargement sur spip.net,
il faudrait peut-être un sous-domaine http://download.spip.net/ hébergé en statique je sais pas où mais autre-part que sur http://www.spip.net pour éviter les risques d'infection ?

Le 2 nov. 2014 à 18:59, cedric@yterium.com a écrit :

Author: cedric@yterium.com
Date: 2014-11-02 18:58:59 +0100 (dim, 02 nov 2014)
New Revision: 21772

Log:
Puisqu'on a un ecran de securite qui permet une securisation quasi-systematique de SPIP en un seul fichier, utilisons le pour offrir une protection automatiquement mise a jour (c'est la bonne pratique en terme de sécurité). Reste a fournir une URL sur spip.net pour maitriser la diffusion des mises à jour automatiques (utilise l'URL de la zone provisoirement)

Modified:
  spip/ecrire/genie/mise_a_jour.php

Details: http://core.spip.org/projects/spip/repository/revisions/21772

_______________________________________________
spip-commit@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-commit
dev: http://trac.rezo.net/trac/spip/

REVERT REVERT — par principe on ne fait pas ça en http mais en https avec vérification du certificat — sinon c’est juste une porte ouverte à toutes les attaques :slight_smile:

On devrait peut-être chercher les bonnes pratiques en matière de sécurité : publier des codes de contrôle, avoir un serveur de paquets externe, envoyer les releases sur github, je ne sais quoi d’autre.

Sans pour autant monter une usine à gaz… en tout cas l’expérience d’aujourd’hui rappelle qu’on ne peut pas faire confiance à un serveur unique, qui a toutes les chances de se faire craquer.

---------- Forwarded message ----------
From: « David Prévot » <taffit@debian.org>
Date: 2014-11-02 23:57 GMT+01:00
Subject: Re: [spip-team] Maj automatique de l’écran de sécurité
To: Fil <fil@rezo.net>

On devrait peut-être chercher les bonnes pratiques en matière de sécurité :
publier des codes de contrôle

Et les signer.

Amicalement

David

Ciao

Pour les copies multiserveur ce n'est pas compliqué. On a depuis un
moment un synchro svn -> git -> github.
Les commits poussés vers github sont "sûrs" vu qu'on pousse avec un
compte identifié et en ssh. Si cela merde avant ...

Pour pousser le vice on pourrait utiliser le mode signoff de git qui
permet de signer chaque commit.

Pour me/nous simplifier la vie je déploie un gitlab ce qui devrait
simplifier l'ouverture des comptes et donc la contribution par ce
biais.

Pour rappel on a aussi du ssl sur le serveur de la zone.

Km

Du coup peut-être directement distribuer depuis une URL github ?
https://github.com/spip/SPIP/raw/master/config/ecran_securite.php

Quitte à faire un repo dédié sur lequel on poussera l'écran uniquement quand on veut deployer une maj auto ?
Ça permet de limiter l'accès à ce repo à quelque clés SSH, et de distrbuer en https. J'ai seulement peur que l'URL ne soit pas stable dans le temps... et si un jour elle ne marche plus on casse tous les processus de maj de l'ecran.

--
Cédric

Fil a écrit :

---------- Forwarded message ----------
From: *"David Prévot"* <taffit@debian.org <mailto:taffit@debian.org>>
Date: 2014-11-02 23:57 GMT+01:00
Subject: Re: [spip-team] Maj automatique de l'écran de sécurité
To: Fil <fil@rezo.net <mailto:fil@rezo.net>>

On devrait peut-être chercher les bonnes pratiques en matière de

sécurité :

publier des codes de contrôle

Et les signer.

Amicalement

David

_______________________________________________
spip-team@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-team

Yop

Le 3 novembre 2014 10:21, Cédric Morin <cedric@yterium.com> a écrit :

Du coup peut-être directement distribuer depuis une URL github ?
https://github.com/spip/SPIP/raw/master/config/ecran_securite.php
Quitte à faire un repo dédié sur lequel on poussera l'écran uniquement quand
on veut deployer une maj auto ?
Ça permet de limiter l'accès à ce repo à quelque clés SSH, et de distrbuer
en https. J'ai seulement peur que l'URL ne soit pas stable dans le temps...
et si un jour elle ne marche plus on casse tous les processus de maj de
l'ecran.

Pour moi github est un vecteur de communication sur lequel nous
n'avons pas la main. Pour de la sécurité cela peut être un complément
mais pas le media principal.

Pour rappel git.spip.org en ssl existe. On a déjà un certificat de
type wildcard couvrant spip.net,spip.org, *.spip.org, *.spip.net

Si on veut un truc qui tienne facilement on peut envisager comme dit tantôt :
-* un site statique en ssl
-* du loadbalancing DNS sur plusieurs clones du site (si l'un est
corrompu on peut le tuer sans stopper le fonctionnement amont)
-* des copies rsync (donc ssh, clefs limitées, automatisable, ...)
-* un site scriptable (on import spécifiquement le spip_loader d'un
dépot, l'écran de secu d'un autre, .....)
-* on maîtrise le contenu de la diffusion comme on veut
-* c'est pérenne dans le temps

Le problème est de savoir ce qu'on veut mettre dedans. La technique
elle est plutôt simple.

Petit raffinement qui se fait de plus en plus si c'est du site
statique, c'est une dépôt VCS (git, hg, ...) qui stocke les données et
qu'on met à jour et qu'on pousse

Km

J’ai pas trop compris suivis l’histoire,

mais je propose

https://update.spip.net
https://update1.spip.net
https://update2.spip.net

Chez trois personnes / serveurs diférents ( moi camille et ? )

comme ça on est sur de la pérénité ( et de l’indépendance)

Et après ya des traitements qui vérifient dans tous les sens des trucs .

Ciao

Pourquoir 3 url ? Une seule suffit on associe les 3 ips serveur au
meme hôte et on pense à mettre un TTL court.
C'est ainsi transparent pour les gens extérieure au temps TTL pres.

Coté serveur :
Camille (spipo )
Gilles (zone)
Ben

Km

Je dirais que 2 suffisent (update et update1).

Le but c'est pas de faire du balancing/disponibilité mais du contrôle :
SPIP interroge https://update.spip.net en vérifiant le certificat.
Si le checksum de l'écran n'est pas le même qu'en local, il interroge aussi https://update1.spip.net en verifiant le certificat, et SI les deux fichiers sont identiques il met a jour l'ecran de sécu.

En parallèle on a un CRON quelque part qui régulièrement télécharge l'écran sur les 2 sources et vérifie qu'ils sont cohérents. Si jamais il y a différence, mail d'alerte sécu ici sur spip-team.

Ainsi :
- le https nous protège en principe d'une attaque man-in-the-middle
- un attaquant doit compromettre "en même temps" les 2 domaines update et update1 pour pouvoir diffuser un écran corrompu.

D'où l'intéret d'avoir les 2 domaines hébergés sur 2 serveurs qui n'ont rien à voir (aucun accès commun, type d'installation différent etc.)

Bon, du coup je suppose que le point faible devient le DNS spip.net sur lequel il suffit de prendre la main.
Est-ce que ça veut dire qu'il faudrait aussi répartir sur 2 domaines différents chez 2 registars différents, si on veut aller jusqu'au bout de la redondance sécuritaire ?

--
Cédric

cam.lafit@azerttyu.net a écrit :

Ciao

Pourquoir 3 url ? Une seule suffit on associe les 3 ips serveur au
meme hôte et on pense à mettre un TTL court.
C'est ainsi transparent pour les gens extérieure au temps TTL pres.

Coté serveur :
Camille (spipo )
Gilles (zone)
Ben

Km
_______________________________________________
spip-team@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-team

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Salut,

Le 02/11/2014 14:54, Fil a écrit :

REVERT REVERT -- par principe on ne fait pas ça en http mais en https avec
vérification du certificat -- sinon c'est juste une porte ouverte à toutes
les attaques :slight_smile:

Même : se reposer sur le protocole d’échange pour vérifier
l’authenticité, ce n’est pas vraiment une bonne idée. Afin de s’assurer
de l’authenticité du contenu, mieux vaut le signer et vérifier la
signature (à la manière des gestionnaires de paquet par exemple).

2014-11-02 19:06 GMT+01:00 Cédric Morin <cedric@yterium.com>:

D'ailleurs, tant pour l'écran que pour la diffusion de la dernière version
en téléchargement sur spip.net,
il faudrait peut-être un sous-domaine http://download.spip.net/ hébergé
en statique je sais pas où mais autre-part que sur http://www.spip.net
pour éviter les risques d'infection ?

L’avantage de signer le contenu, c’est aussi de pouvoir le distribuer
depuis multiple miroirs. Pas besoin de faire confiance au miroir, juste
à la signature (même SourceForge est capable de se faire pirater un
miroir pour offrir du contenu malveillant…). Multiplier les miroirs, à
condition de pouvoir en authentifier le contenu, permet de diminuer la
surface d’attaque (cela augmente le nombre de serveurs à attaquer), tout
en fournissant un autre moyen de vérifier l’authenticité (télécharger le
même contenu depuis plusieurs endroits différents sur plusieurs miroirs
différents, si le contenu est toujours le même, c’est une bonne
indication de la probabilité de ne pas avoir à la fois un ou quelques
miroirs piratés ET être victime d’une ou quelques attaques du type MITM
ou usurpation de DNS) si on est pas capable de faire confiance à la
signature.

http://www.undernews.fr/reseau-securite/une-version-de-phpmyadmin-contenant-un-backdoor-distribuee-sur-sourceforge.html

Le 2 nov. 2014 à 18:59, cedric@yterium.com a écrit :

Author: cedric@yterium.com
Date: 2014-11-02 18:58:59 +0100 (dim, 02 nov 2014)
New Revision: 21772

Log:
Puisqu'on a un ecran de securite qui permet une securisation

quasi-systematique de SPIP en un seul fichier, utilisons le pour offrir une
protection automatiquement mise a jour (c'est la bonne pratique en terme de
sécurité).

Un bémol : les mises à jour automatiques, ce n’est une bonne pratique
qu’à condition de pouvoir les authentifier (sinon au contraire, c’est le
meilleur moyen de diffuser des failles). Le problème suivant, c’est
l’atteinte à la vie privée : vous détenez une base de données de tous
les sites existants, par avance merci de mettre en place la possibilité
de désactiver cette fonctionnalité.

Amicalement

David
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQEcBAEBCAAGBQJUZgvOAAoJEAWMHPlE9r08t3AH/1BC0F7VZZBQukX1Zxnh6P34
xfdKZVYHHw9Oua/n6ZLz41DciMRisBvXJUKr7E0eRCHaVatqWsgDwUb+du2cjykW
sPZcY2rOOIt6EsbY+qKClz/k3gRiOBMEl6DaDwTPHJzZDNsrsWXj0BcTjSXEo+SF
PaFVgDEZaXm8Xy4BaGEkB5UmCmROd/VT4+D+pWK1mPbCbZdabWQtgNDJPaDRsb8M
xt/TXBwaLsvGL8vPTzKVzJVBIn7AAgBGgG4FLGHlR6jqVi/cofMQSIxD/8hkIDdG
MEFJtIIRODsyKd3ns/D4a+0unLSyUcSCmIb3ZjRC3Jjxq+wyvP31w0BUwBvxjJI=
=uj3S
-----END PGP SIGNATURE-----

Le 14/11/14 15:03, David Prévot a écrit :

Le problème suivant, c’est
l’atteinte à la vie privée : vous détenez une base de données de tous
les sites existants, par avance merci de mettre en place la possibilité
de désactiver cette fonctionnalité.

Je plussoie !
Avec ma bise à toutes les codeuses et codeurs !
touti

Ah bon, on détient « une base de données » de tous les sites existants ? Ce serait bien d’être précis. (Si tu parles des logs de spip.net, ils ne contiennent rien de plus qu’une adresse IP des serveurs qui les ont contactés, éventuellement à travers un proxy anonymisant.)

Je rappelle qu’on fait un effort dans tous les cas pour éviter de loger des infos inutiles, mais parfois il faut que le site contacte l’un de nos serveurs. C’est le cas des images TeX (où d’ailleurs c’est bien le site qui contacte math.spip.net, et pas la machine du visiteur), des mises à jours de listes de plugins, etc.

Si tu penses que ce contact est encore trop attentatoire à la vie privée, il faut poser la question d’une désactivation globale de la fonction « accès distant » — PHP le permet, et SPIP permet la configuration d’un proxy pour ses appels d’URLs distantes. Ce sujet ne me semble en tout cas pas directement lié à cette idée d’une mise à jour de l’écran de sécurité.

Pour revenir à ce sujet. La fonction de mise à jour auto de l’écran de sécurité serait quand même assez utile : on a des utilisateurs sans notion de sécurité informatique, qui ne lisent ni les CVS ni les logs de commit ni les communiqués de spip-ann@rezo.net, et qui ne font aucune mise à jour. Jamais. Et alors ils se font hacker, et la vie privée de leurs visiteurs est mise en danger, et même assez gravement dans le cas d’un site pro-palestinien dont le trafic est détourné par ce fou d’Ulcan.

Mais comme tu le dis, tout peut être empoisonné : le DNS, les serveurs, les signatures, etc. Je suis totalement d’accord sur le fait qu’on ne doit pas implémenter une fonction de sécurité sans s’assurer qu’elle est bien programmée, et surtout qu’elle ne constitue pas en soi un vecteur d’attaque. A titre personnel je vois comment on peut limiter les risques (c’est ce dont on parle ici : redondances des DNS, signatures, https etc), mais je ne me sens pas capable de garantir que ça suffit, ni que je n’ai pas merdé.

Cela étant dit, le système actuel où les webmestres mettent à jour parce qu’ils ont reçu un mail disant « un nouvel écran de sécurité est dispo » n’est pas totalement fiable non plus.

Bonjour,

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Salut,

Le 15/11/2014 03:38, Guy Cesaro a écrit :

Le 14 novembre 2014 15:03, David Prévot <taffit@debian.org> a écrit
: ... , par avance merci de mettre en place la possibilité

de désactiver cette fonctionnalité.

Cette possibilité a été mise en place par avance pour la maj auto
de l'écran, define('_URL_ECRAN_SECURITE',false); dans
mes_options.php et zou on sort.

Merci pour la précision.

Amicalement

David
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQEcBAEBCAAGBQJUZ0JLAAoJEAWMHPlE9r0845cH/j6G16RphXWJGcqJyXgPTDdY
BqZyt7BJqXqyA59DILnPjnKErlcThDasMp64kgJm3MDeMAUrR1QQOskTZ1KMdtAr
jBU3g1+cD1+BzckvRuG+d3W5Z1ts6+f5TNKPPJ2MrmJ7Bk/vbaz8K7RcLcioyKMa
YX3Iqf/rU9c6th2gyZuyH7LjV3zHyvDFFhxl328GYV7OytNHjfIOlIFYgGaTmTgJ
/6NgRkXkS5gRzLAqc4Ftiwztepzn2Ooxgh739l5cPAn+JQ8gnBhXT2IXXBlXZB2t
FBKG4GhdpOJ0fcVYBBZhbNgKvyQwxYt0ItBZ/wpD/vIAsvAmh3qCGtolPFik/bI=
=DSeS
-----END PGP SIGNATURE-----

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Salut,

Le 15/11/2014 02:09, Fil a écrit :

Ah bon, on détient "une base de données" de tous les sites existants ? Ce
serait bien d'être précis. (Si tu parles des logs de spip.net, ils ne
contiennent rien de plus qu'une adresse IP des serveurs qui les ont
contactés, éventuellement à travers un proxy anonymisant.)

Je pense non seulement à la protection de la vie privée, mais aussi à la
sécurité : un serveur qui contient les logs de la plupart des sites (ou
au moins leurs adresses IP) qui ont téléchargé (une certaine version de)
SPIP ou l’écran dé sécurité, ça peut être une base de données
intéressante pour quelqu’un qui a de mauvaises intentions, et faire de
ce serveur une cible particulièrement intéressante (parce qu’elle peut
ouvrir la porte à d’autre cibles).

Bien sûr, aujourd’hui, ce type de scénario n’est pas réaliste, puisque
gogogle est bien bavard (d’autant plus que Sarka-SPIP continue à
indiquer par défaut là version de SPIP en pied de page de l’espace
public par défaut) pour trouver des cibles « faciles » :
http://lmgtfy.com/?q="Plan+du+site"+"spip+2.1.12"+Sarka-SPIP

Pour clarifier mon propos : la mise en place d’artifices permettant de
mettre à jour facilement ou automatiquement des sites et des écrans de
sécurité me semble être un bon en avant dans la protection des
utilisateurs de SPIP, et c’est bien. Certains utilisateurs « savent ce
qu’ils font » et leur permettre de désactiver facilement ces
fonctionnalités afin de garder le système fonctionnel tel qu’ils l’ont
mis en place me semble important.

Par exemple, en tant que distributeur de SPIP par l’intermédiaire de
Debian, j’ai désactivé la fonctionnalité de mise à jour de la dernière
version de SPIP disponible et son affichage dans l’espace privé pour
deux raisons : puisque les mises à jour dans Debian se font par
l’intermédiaire du paquet correspondant (dans lequel sont incluses les
mises à jour de sécurité ciblées pour la version distribuée), cet
affichage ne sert à rien (à part ajouter de la confusion), et demander
aux serveurs de spip.net quelle est la dernière version est une (petite)
atteinte à la vie privée qui est par conséquent inutile.

Pour clarifier encore (si je suis lourd, arrêtez-moi) : vu le nombre de
failles et d’attaques existantes, j’ai d’honnêtes doutes sur la
pertinence de se reposer sur les DNS et HTTPS pour assurer
l’authenticité. En revanche, l’utilisation de signatures (avec un
algorithme sérieux, genre des clefs RSA d’au moins 2048 bits) est parmi
ce qu’il y a de plus fiable. Juste un exemple dans le monde des
applications en PHP : toutes les version d’ownCloud [1] sont signées [2]
et la clef publique [3] est aussi disponible sur le réseau des serveurs
de clefs [4]. Le seul bémol pour attester de l’authenticité de la clef,
c’est qu’elle n’est signée que par deux clefs (et seule une d’entre elle
à un lien indirect dans le « strong set » [5]), mais ça s’améliore (au
début, elle n’était même pas sur les serveurs de clefs :).

1: download.owncloud.com
2: download.owncloud.com
3: https://owncloud.org/owncloud.asc
4:
http://pgp.circl.lu/pks/lookup?op=get&fingerprint=on&search=0x2D5D5E97F6978A26
5: http://pgp.cs.uu.nl/stats/BB55A47FC901C33E.html

Je serais vivement intéressé de pouvoir vérifier l’authenticité des ZIP
de SPIP dans un futur proche avec un système comme celui mis en place
par ownCloud (et bien d’autres).

Amicalement

David
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQEcBAEBCAAGBQJUZ1RcAAoJEAWMHPlE9r088jgH/RoI0OGoFpy+RAMjZ9HCH7AA
tAvFU49YLG/dTVQLSN8EWCZp56EAOxnwjMAj+rY70W4rabmKOixnOTmmJgYY1bCt
7hdcgJfLN3kuM8JZ/jRXX3w1rkvmz3gJlpMlbVan6ZHPm5qFA5PU6ZBpXPiglTZy
T48LI6gHHYKr2BLtanZF3If19YW4pxTSJ/WRkeD2zo89Tk1Jgc60N1YtI4y2/myb
4BmafILJoWVMhhbKkeYh/nQkcWb5RGf3Dt/CvpL4Ku2HLcyKSeMcfqT8YGQI73Iu
9r0udLojSyBgS07jH8vHPpzq1yTDljNbDCAAH/mraop6NkxcKTI4Xsjcm90ZP/0=
=U9a/
-----END PGP SIGNATURE-----

2014-11-15 14:25 GMT+01:00 David Prévot <taffit@debian.org>:

Je serais vivement intéressé de pouvoir vérifier l'authenticité des ZIP
de SPIP dans un futur proche avec un système comme celui mis en place
par ownCloud (et bien d'autres).

Oui ce serait assez chouette de pouvoir vérifier les zip, ainsi que chaque
fichier individuellement une fois dézippé (c'est peut-être un autre sujet).
Il faudrait au minimum faire un ticket détaillé sur le sujet, et
éventuellement un début de code (de préférence du code déjà vérifié et piké
ailleurs).

-- Fil

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Salut,

Le 15/11/2014 10:03, Fil a écrit :

Oui ce serait assez chouette de pouvoir vérifier les zip, ainsi que
chaque fichier individuellement une fois dézippé (c'est peut-être
un autre sujet). Il faudrait au minimum faire un ticket détaillé
sur le sujet, et éventuellement un début de code (de préférence du
code déjà vérifié et piké ailleurs).

Un point de départ : https://wiki.debian.org/UpstreamGuide#Tarballs

Amicalement

David
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQEcBAEBCAAGBQJUZ16nAAoJEAWMHPlE9r0878oIAJKomc07tI3e8amvTwHpy3Pv
322lYqSh2ZTZ9MyMNUY+1cJsIiPbVO+NKaVYZaUB+s4oyDtS9+mS8xOibM8YlTY5
jQ1F7HlosTUqI4jR2q8+Ef/y0ztaexq9ydkkNb8dqyf6YMg9Kg3H0xTQG0VRMQDT
nwLU5aK0l3+LLI4OwXGT/o8fiHA/pmmnaT6nZLashML7gzVe9OmR+UuSISL2CMxp
TcWP1j0hIYs7YP0rCflDftaHYfeQYS8oPBNl6euIqS1o5VQGfYolahI/SBWile0/
oDehacSt40FYO2KK+bmbYBBKarS3qCgRjSCId9GdQCDqjjQ/FVJSTzADsBhx/jM=
=EM20
-----END PGP SIGNATURE-----

En substance on est raisonnable : on dit que c'était un peu trop baclé pour faire quelque chose de totalement safe pour cette version, et on prends le temps de faire ça bien pour la prochaine version 3.2 ?

--
Cédric

Fil a écrit :

2014-11-15 14:25 GMT+01:00 David Prévot <taffit@debian.org
<mailto:taffit@debian.org>>:

    Je serais vivement intéressé de pouvoir vérifier l’authenticité des ZIP
    de SPIP dans un futur proche avec un système comme celui mis en place
    par ownCloud (et bien d’autres).

Oui ce serait assez chouette de pouvoir vérifier les zip, ainsi que
chaque fichier individuellement une fois dézippé (c'est peut-être un
autre sujet). Il faudrait au minimum faire un ticket détaillé sur le
sujet, et éventuellement un début de code (de préférence du code déjà
vérifié et piké ailleurs).

-- Fil