276 meneos
 

Error de seguridad en wordpress permite tirar servidores en apenas 5 minutos

El error que afecta a todas las versiones ha sido comunicado a security@wordpress.org sin que hayan publicado ningún parche oficial. En el propio articulo donde se detallan los puntos del grave agujero de seguridad, aparte de un código de ejemplo para explotar el mencionado bug, se incluye un parche para solucionar el problema en caso de que tu Wordpress esté afectado.
etiquetas: wordpress, seguridad, error, bug, servers, caidos
negativos: 0   usuarios: 143   anónimos: 133  
compartir:  twitter  facebook  tuenti  
  1. #1   Si quieres extenderlo a "todas los softwares PHP que no sanean mb_convert_encoding()" es válido tambien... :-)
    50  votos: 5   link
    el 17-10-2009 18:59 UTC por Martes13 Martes13
  2. #2   Un poco desagradecidos los señores de Wordpress. Alguien se preocupa de revisar el código y mandar una solución válida y ellos lo desprecian y no contentos con eso implementan una solución que sigue teniendo fallos. En fin, ellos son los que pierden.
    138  votos: 16   link
    el 17-10-2009 20:08 UTC por pozibrothers pozibrothers
  3. #3   #1 depende de muchos factores, sobretodo de si se puede o no controlar el tercer argumento. Esto en realidad sucede con muchas funciones de PHP, pero precisamente mbstring tiene funciones, como esta, que consumen muchísimo, y que el usuario pueda alterar su input, es peligroso.

    Lo raro, es que se hace poco estudio sobre ataques de consumo y agotamiento de recursos en webapps, mientras que es motivo de extenso estudio en otras capas, como en los servidores de servicios de red.
    10  votos: 0   link
    el 17-10-2009 20:13 UTC por jcarlosn jcarlosn
  4. #4   #0 debería usar resaltado de sintaxis en el blog, el post está un poco ilegible.
    33  votos: 2   link
    el 17-10-2009 20:15 UTC por DZPM DZPM
  5. #5   Guau. Se cae Internet.Servicios importantisimos están amenazados.

    Wordpress.Los bloggers! ¿que vamos a hacer sin ellos?

    p.d. ¿de donde dices que se puede descargar el exploit?
    -53  votos: 9   link
    el 17-10-2009 20:22 UTC por Professor Professor
  6. #6   #5
    RTFA:

    > Por lo que si en $charset (mediante $_POST) le enviamos una cadena con 350k de UTF-8 separados por comas, y en $title por ejemplo, le enviamos una cadena de 350k de largo, hará comprobaciones sobre 350k^2 caracteres, lo cual requiere realmente mucho tiempo (minutos).
    38  votos: 3   link
    el 17-10-2009 20:26 UTC por DZPM DZPM
  7. #7   #6 muy bien, ahora falta que alguien lo pruebe contra algun objetivo que merezca la pena ...si hay alguno.
    14  votos: 1   link
    el 17-10-2009 20:29 UTC por Professor Professor
  8. #8   me parece muy mal que publiques el fallo sin que halla un parche oficial.

    Por mucho que los de wordpress no te hagan caso a la primera. Deberias seguir intetandolo y no publicar tu descubrimiento hasta un tiempo despues de que las actualizaciones buenas hayan salido.
    -26  votos: 10   link
    el 17-10-2009 20:39 UTC por dac dac
  9. #9   #8 si, insistiendo hasta el infinito, y todo eso con mi tiempo, por que no olvides que esto es software libre, y la gente que encuentra esos errores es voluntaria y todo eso.

    Encima de puta, hay que poner la cama, como decía mi abuela.
    59  votos: 7   link
    el 17-10-2009 20:42 UTC por jcarlosn jcarlosn
  10. #10   #8 ¿Te parece mal que publique el fallo (con parche incluido para solucionar el problema) cuando los de WordPress no lo han solucionado y cualquier otra persona podría estar utilizando el fallo con fines maliciosos?

    El fallo es de cajón. Si no lo ha encontrado otra persona antes (que lo dudo), seguro que otra lo encontrará tarde o temprano... es mejor que alguien haya publicado el parche para que podamos prevenirlo.
    78  votos: 7   link
    el 17-10-2009 20:43 UTC por morzilla morzilla
  11. #11   #7 menudo script-kiddie...

    Sobre la noticia, aunque sirve para hacer un DoS, depende tambien de como esté configurado el php, ya que mediante el php.ini se puede limitar el uso de cpu y duración de ejecución de cada script.

    Por otro lado, usando el modulo mod-security de apache se suelen restringir el tamaño de los mensajes POST que puede recibir un servidor, al final no es tan facil como parece...
    65  votos: 7   link
    el 17-10-2009 20:45 UTC por --21751-- --21751--
  12. #12   PHP suele tener por defecto un límite de tiempo de ejecución de 30 o 60s, además un límite de memoria de unos 64MB por script (según servidor). Mientras se está ejecutando una petición de estas se pueden seguir ejecutando otras sin problemas. Eso sí, si se abren varias peticiones la vez y el servidor no tiene ningún límite de peticiones simultáneas por IP pues sí que se puede dejar KO el servicio durante un rato, aunque no debería afectar al funcionamiento de otros servicios como el SSH, el MySQL o el FTP.
    9  votos: 0   link
    el 17-10-2009 20:51 UTC por Nenillo Nenillo
  13. #14   Estoy probando el exploit con mi web para ver si le afecta pero al ejecutarlo salen errores:

    Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in exploit.php on line 6
    6  votos: 0   link
    el 17-10-2009 21:04 UTC por pikucom pikucom
  14. #15   #11 y #12

    Yo pensaba igual, es una buen observación, conozco la directiva max execution time de php, y la función set_time_limit, de hecho, la conozco por que programando me ha saltado en mas de una ocasión.

    De hecho, esa directiva es el motivo de por que no envío mas de 350k's, por que se que aunque si enviase 1mb por post, tardaría el triple, no importa, por que con 350k's ya se llega a los 30 segundos que tiene por defecto php de máximo tiempo de ejecución.

    Sin embargo, el problema reside en que tu puedes hacer una petición cada 5 segundos mas o menos (por el peso de la petición) y se tardan 30segundos en ser procesadas. Por lo que en poco tiempo, el servidor tiene una cola de cientos para procesar, y cada una, consume la CPU casi completamente.

    Acerca del limite de memoria de PHP (memory_limit en php.ini) algo que he descubierto haciendo pruebas con este bug contra mi propia servidor (en casa) es que memory_limit no se aplica para módulos de php como mbstring, o al menos no en instalación, habría que ver los detalles, por que yo tenía hilos de apache consumiendo 200mb de ram, cuando tengo memory limit a 16mb, sería un fallo bastante grande php no limitar la memoría de los plugins, sólo la del script, y es lo que parece.

    Cómo digo, lo he probado bastante, y no resulta tan fácil prevenirlo, aparte de que la solucíón que proponen por ejemplo de modificar el tamaño de $_POST, afecta globalmente a todo el wordpress, pudiendo hacer que otras cosas dejen de funcionar, por que necesiten $_POST mas grandes.

    350k por post no es tan exagerado, de hecho, cuando haces post de un archivo (upload) es fácil que superes eso.

    Aparte de eso, evidentemente que si se ponen grandes medidas de seguridad en el servidor se pueden paliar los efectos (aunque no detenerlos completamente) pero hay efectos secundarios muy complejos, por ejemplo, los hilos en ejecución conectan al mysql, y hay un limite de conexiones a mysql por host, por lo que si se le acumulan a apache muchas request en proceso (por que tienes limitada la CPU) y todas conectadas al mysql, la siguiente request no podrá conectar al mysql, con el consecuente fallo.

    Cómo digo, se pueden paliar los efectos con trabajo en el servidor, pero el bug sigue ahí, la solución es que arreglen wordpress.

    #14 a mi me funciona, vigila que le comentario que hay en las primeras líneas no se haya partido en dos líneas o alguna cosa así.
    69  votos: 6   link
    el 17-10-2009 21:05 UTC por jcarlosn jcarlosn
  15. #16   Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in exploit.php on line 6

    prueba a canviar las comillas

    echo “You need to specify a url to attackn”;

    echo "You need to specify a url to attackn";
    6  votos: 0   link
    el 17-10-2009 21:48 UTC por serni serni
  16. #17   Chapó el autor del POST...
    17  votos: 1   link
    el 17-10-2009 21:59 UTC por Stylah Stylah
  17. #18   #16 Perdona pero será caMBiar las comillas, ¿no?

    Lo siento, pero es que me ha dañado los ojos.
    8  votos: 0   link
    el 17-10-2009 23:55 UTC por pozibrothers pozibrothers
  18. #19   #14 Lo mismo por acá. Lástima no saber PHP.
    8  votos: 0   link
    el 18-10-2009 00:11 UTC por mimismo mimismo
  19. #20   #9 ¿Qué pasa que tu abuela la gran P no cobraba un suplemento por la cama? Seguro que si hombre :-D
    -27  votos: 3   link
    el 18-10-2009 01:53 UTC por --114185-- --114185--
  20. #21   hombre .. me parece mucho peor que wordpress lo ignore de esa manera... quizas publicando el error se den prisa a corregirlo oficialmente desde wordpress...
    9  votos: 0   link
    el 18-10-2009 02:26 UTC por dac dac
  21. #22   y otro FAIL mas para php.
    -33  votos: 5   link
    el 18-10-2009 04:44 UTC por sickboy sickboy
  22. #23   #22 la culpa no es de php es de los programadores.
    46  votos: 4   link
    el 18-10-2009 06:32 UTC por ZeYt ZeYt
  23. #24   cierto, es lo que tiene pensar en catalan y escribir en castellano que uno termina usando un poco de todo , sorry.
    6  votos: 0   link
    el 18-10-2009 07:39 UTC por serni serni
  24. #25   El fin de internet esta cerca :-)
    7  votos: 0   link
    el 18-10-2009 11:10 UTC por adelgazando adelgazando
  25. #26   Con todas las paginas de p2p que hay en wordpress la sgae ya esta usando el script, seguro.
    17  votos: 1   link
    el 18-10-2009 11:12 UTC por adelgazando adelgazando
  26. #27   #23 fail para php? eso es como decir cuando te casa windows "otro fail más para C"
    10  votos: 0   link
    el 18-10-2009 12:00 UTC por Haze Haze
  27. #28   #14 #16 el error es porque al copiar y pegar de la web las comillas y apostrofes salen diferentes y no funciona bien.

    He copiado el codigo que funciona en la siguiente URL

    pastebin.com/f5bdff8f
    22  votos: 2   link
    el 18-10-2009 12:33 UTC por dUaLiZaLo dUaLiZaLo
  28. #29   #23, #27: a ver, lamers

    la culpa es totalmente de php, es un fallo de diseño que una funcion del core necesite validacion extra para no petar (por lo menos, ya que los programadores de php son tan noobs, que lo especifiquen en la documentacion)

    y otro mas porque php tiene una laaarga historia de malas configuraciones por defecto y fallos de diseño (no se, ahora que me vengan a la cabeza... register globals on, safe mode off, no escapar automaticamente la url... una mala configuracion por defecto es fallo del lenguaje...)

    y nenes, se de lo que hablo, soy contrib en un interpretador que corre bajo la VM de java y que NO hace estas cosas mal.
    25  votos: 2   link
    el 18-10-2009 16:26 UTC por sickboy sickboy
  29. #30   Al final si que han sacado una nueva versión:

    wordpress.org/development/2009/10/wordpress-2-8-5-hardening-release/

    The headline changes in this release are:

    * A fix for the Trackback Denial-of-Service attack that is currently being seen.
    * Removal of areas within the code where php code in variables was evaluated.
    * Switched the file upload functionality to be whitelisted for all users including Admins.
    * Retiring of the two importers of Tag data from old plugins.
    17  votos: 1   link
    el 21-10-2009 10:41 UTC por dUaLiZaLo dUaLiZaLo
  30. #31   #30 ¿Ese fix del trackback en la 2.8.5 se supone que soluciona el fallo?
    Otra pregunta, ¿si el servidor tiene un límite para el tiempo de ejecución de 4 horas estoy a salvo?
    7  votos: 0   link
    el 22-10-2009 13:33 UTC por jacarepagua jacarepagua
comentarios cerrados

menéame