Categories
PHP Seguridad Web

PHP: 20 aplicaciones más vulnerables

Ed Finkler, en base a los datos de National Vulnerability Database, publicó una lista de las 20 aplicaciones -desarrolladas en PHP- que más vulnerabilidades tuvieron en el periodo Abril de 2006 - Abril de 2007

20 aplicaciones más vulnerables en PHP

Tal como se comenta en el artículo original, WordPress empezó mal este año y es por eso que está dentro de las cinco aplicaciones más vulnerables para el periodo seleccionado.

Categories
Seguridad Sql Injection Web WordPress XSS

WordPress: Lista de plugins no recomendados

A continuación muestro una pequeña lista de plugins para WordPress que tienen problemas de seguridad o rendimiento y por lo tanto, no deberían ser utilizados tal cual son descargados; si tienen instalado alguno de éstos, pueden desactivarlos, ponerse en contacto con el autor o solucionar los problemas por sus propios medios - corregí algunos plugins que menciono, pero muchos de los cambios que hago, son específicos para este blog 🙁

  • Acronym Replacer Revisited: Además de los problemas de rendimiento anteriormente descritos, es vulnerable a ataques XSS y CSRF, gracias a este último es posible insertar y ejecutar código PHP arbitrario.
  • Spam Karma 2: Me recomendaron este plugin hace poco y a pesar de lo bueno que parece ser, finalmente lo descarté porque es vulnerable a ataques XSS, CSRF y SQL Injection - ya se imaginarán lo que puede pasar con los datos de sus blogs.
  • Adsense-Deluxe: No realiza ninguna protección contra ataques CSRF, usando este último es posible persistir HTML arbitrario (¿XSS o HTML Injection?).
  • Google Analytics: Falla al intentar protegerse contra ataques CSRF (no es suficiente usar la función check_admin_referer) y cae en el mismo problema que Adsense-Deluxe.
  • catcloud: Ídem al problema que tiene Adsense-Deluxe.
  • Google (XML) Sitemaps: Ídem al problema que tiene Adsense-Deluxe.
  • Related Posts: Ídem al problema que tiene Adsense-Deluxe. Si se usa la versión que incluye el soporte para páginas no encontradas (404), entonces es posible hacer SQL Injection en los blogs que lo usen.
  • Audio player: Ídem al problema que tiene Adsense-Deluxe.
  • wp-cache 2.1: En realidad pongo esta versión del plugin porque Dreamhost todavía sigue instalando la versión vulnerable de wp-cache, que tiene un problema similar a Adsense-Deluxe. Pueden actualizar manualmente a la versión 2.1.1 para corregir este fallo.
  • Pagebar: Es vulnerable a ataques XSS en versiones recientes de WordPress

Imagino que esta lista puede crecer indefinidamente 🙂 pero los que muestro aquí, son aquellos con los que tuve/tengo contacto en este blog y en otros que ayudé a poner a punto.

Nota: Por obvias razones, no voy a publicar detalles o pruebas de concepto de los problemas de seguridad. Por otro lado, por falta de tiempo, sólo me puse en contacto con algunos autores.

A excepción de wp-cache, los problemas mencionados están presentes en las últimas versiones de los plugins.

Categories
Seguridad Web WordPress

WordPress 2.0.10 y 2.1.3

A estas alturas del día, seguramente ya están al tanto de que el equipo de WordPress anunció la liberación de las versiones 2.0.10 y 2.1.3 de este CMS. Los problemas de seguridad que corrigen estas versiones son (se reportaron unos cuantos problemas más pero no tienen un ticket correspondiente para ponerlo):

Lo que me preocupa de estas nuevas versiones, es que todavía siguen incluyendo la versión vulnerable a XSS del plugin akismet.

Categories
CSS Diseño Web

Todo listo para el “CSS Naked Day”

CSS Naked Day, es un evento que se realiza cada 5 de abril y tiene como objetivo promover el uso de estándares web.

Para participar, lo único que tienen que hacer es quitar todas las hojas de estilo y dejar que se muestre sólo la estructura de vuestros sitio. Si utilizan WordPress y quieren formar parte de este evento, puedes utilizar el siguiente plugin:

php:

<?php
/*
Plugin Name: CSS Naked Day
Plugin URI: http://www.buayacorp.com/
Description: Elimina todas las hojas de estilo definidas en la cabecera del tema que actualmente usas.
Author: Alexander Concha
Version: 1.0
Author URI: http://www.buayacorp.com/
*/

function is_naked_day() {
        return '0405' == mysql2date('md', current_time('mysql'));
}
function css_naked_stylesheet($stylesheet_uri) {
        if (is_naked_day()) {
                return '';
        }
        return $stylesheet_uri;
}
function css_naked_head() {
        if (is_naked_day()) {
                $header = ob_get_contents();
                ob_end_clean();
               
                $header = preg_replace('|<link.*?rel="stylesheet"[^>]*>|is', '', $header);
                $header = preg_replace('|<style[^>]*>.*?</style>|is', '', $header);
               
                print $header;
        }
}
add_filter('stylesheet_uri', 'css_naked_stylesheet');
add_filter('wp_head', 'css_naked_head', 100);
?>

Lamentablemente el código mostrado no elimina el CSS generado por otros plugins, así que hay que modificar manualmente éstos -pueden usar la función is_naked_day para determinar si es el día indicado o no 😉

Actualización: Sergio publicó una versión más genérica, pero usando javascript.

Categories
Seguridad Web WordPress XSS

Problemas de seguridad con WordPress 2.x y el plugin pagebar

Debido a unos cambios hechos en la función get_pagenum_link de las ramas 2.0 y 2.1 de WordPress, varios blogs que usan el plugin pagebar son vulnerables a XSS.

Si alguno de ustedes usa el mencionado plugin y se muestra algún mensaje con la siguientes direcciones URL, entonces necesitan modificar ciertas cosas:

code:

http://tublog.com/index.php?"><script>alert(/XSS/)</script><&paged=2
http://tublog.com/index.php/"><script>alert(/XSS/)</script><&paged=2

Para corregir el problema descrito en el plugin pagebar, tienen que escapar el valor devuelto por get_pagenum_link con las funciones attribute_escape o clean_url. Por si alguien desea, puede bajar la versión modificada o aplicar el parche que corrige estos problemas.