Filosofia
Quan es descobreix o se’ns assenyala un «forat» de seguretat, l’equip de desenvolupament d’SPIP s’esforça per corregir el problema el més ràpidament possible tant en la seva versió en desenvolupament com en les versions estables, per tal de no difondre més el codi erroni.
No obstant, la majoria d’usuaris no té sempre el temps o la possibilitat de fer una actualització, i es tendeix a sospesar els pros i els contres amb el risc de tenir, després d’una actualització fins i tot mínima, algunes incompatibilitats o alteracions amb el codi provat i validat que ja teníem en línia.
Per un hostatjador, la informació de l’existència d’un problema de seguretat és també una arma de doble tall: per una banda, no desitja deixar un «forat» en un dels llocs allotjats, per l’altra, no té sempre l’autorització per modificar els llocs. I posar-los fora de línia no és possible, excepte a casa dels hostatjadors econòmics o paranoics.
La pantalla de seguretat està aquí per respondre a tota aquesta problemàtica. Es tracta d’un únic fitxer php, separat d’SPIP, que es pot actualitzar independentment de la resta del codi, i que és compatible amb totes les versions d’SPIP, fins i tot amb les més antigues.
Aquest fitxer no substitueix una veritable actualització a una nova versió d’SPIP, però li pot permetre bloquejar certs atacs mentre ens esperem per fer una migració.
De fet, aquesta pantalla pot ser activada, a nivell de servidor, per tot el conjunt de scripts php (d’SPIP o no), et garanteix, si està actualitzat, que totes les vulnerabilitats conegudes siguin impossibles d’explotar, sigui quina sigui la versió d’SPIP. D’aquí el seu nom de «pantalla»: es col·loca entre el visitant i SPIP, i verifica que el visitants i verifica que el visitant no provi d’explotar un atac conegut.
Quan es descobreix una fallada, en tindrem prou actualitzant aquesta pantalla per parar qualsevol possible atac per mitjà del error esmentat; això ens deixa temps per actualitzar els scripts d’SPIP amb calma i tranquil·litat i en el moment més idoni.
Baixada
La versió més recent d’aquesta pantalla es troba sempre a l’adreça:
http://zone.spip.org/trac/spip-zone/browser/_core_/securite/
Enllaç de baixada:
http://zone.spip.org/trac/spip-zone...
Es pot, també, recuperar i sincronitzar amb SVN :svn co svn://zone.spip.org/spip-zone/_core_/securite/
El fitxer s’anomena ecran_securite.php
Instal·lació
Tenim diferents maneres d’instal·lar aquesta pantalla:
A nivell d’un lloc SPIP concret:
A partir d’SPIP 2.0.9, en tenim prou posant el fitxer ecran_securite.php
a dins del directori config/
del lloc per tal que aquest sigui tingut en compte automàticament.
Per les versions anteriors d’SPIP, convé afegir el codi següent a dins de config/mes_options.php
o ecrire/mes_options.php3
segons la versió d’SPIP que s’utilitzi (fitxer que haurem de crear si no existeix):
<?php
@include_once dirname(__FILE__).'/ecran_securite.php';
?>
La pantallà es carregarà llavors just després del fitxer mes_options.php
.
A nivell de servidor:
Posarem aquest fitxer a dins d’un directori que el puguin llegir tots els llocs (per exemple /usr/share/php/ecran_securite/
).
Modificar php.ini
, afegint-hi les línies següents:
auto_prepend_file '/usr/share/php/ecran_securite/ecran_securite.php'
o bé, modificar httpd.conf
, afegint:
php_admin_value auto_prepend_file '/usr/share/php/ecran_securite/ecran_securite.php'
En ambdós casos, la pantalla està inclosa a cada «hit» php abans del llançament de l’script normal. Per tant, es pot bloquejar qualsevol crida «nociva».
Configuració
A banda de la seguretat, la pantalla té la capacitat de modular els accessos dels robots d’indexació als scripts php, de manera que els diu que «tornin més tard» quan el servidor està saturat.
Aquest comportament es pot configurar, tot indicant al capdamunt del mateix fitxer:
define('_ECRAN_SECURITE_LOAD', X);
Aquest reglatge activa la protecció anti-robots quan la càrrega del servidor (load) supera el valor X. El valor per defecte és 4; per desactivar-lo, posar-hi 0.
Compatibilitat
La pantalla intervé el mínim possible, només bloqueja les variables de les que sap, que han estat, en un moment donat de la història d’SPIP, mal controlades, i que podrien, per tant, provocar un atac. Per tant, és compatible amb totes les versions d’SPIP.
No obstant, la pantalla comporta certes variables. Així, per exemple, les variables anomenades id_xxx
són controlades totes com si fossin obligatòriament valors numèrics enters, per evitar qualsevol injecció de codi SQL per mitjà d’aquest tipus de variable molt corrent.
Alguns plugins que utilitzen, per exemple, &id_x=new
per crear un objecte x. no són compatibles amb totes les regles de la pantalla. Per ser compatibles amb SPIP 2.1, aquests plugins s’hauran d’adaptar ràpidament a les regles de la pantalla.
Verificació i test
Per verificar la bona execució del script, cridar el lloc públic afegint al url o bé ?test_ecran_securite=1
, o bé &test_ecran_securite=1
.
la visualització resultant hauria de ser:
Error 403
You are not authorized to view this page (test 1.6.3)