Gravatar de Armonth

Seguridad y plugins de WordPress peligrosos

Se han dado a conocer los resultados del concurso de la competición de hacer plugins para WordPress, lo cual ha originado una expectación importante…

El problema viene ahora que los plugins ganadores no son ningún alarde de seguridad siendo potencialmente muy peligrosos para la seguridad de nuestro blog.

Y esto me lleva a un tema que puede generar polémica pero si generalizamos (aunque nunca sea justo generalizar) podría decir que 9 de cada 10 plugins son basura: inseguros, simples, cosas tontas que se pueden hacer con dos líneas de HTML/PHP, etcétera. Pero ya digo, sería injusto meter todos los plugins en el mismo saco.

Un ejemplo son los plugins para mostrar publicidad que sí, son muy bonitos y configurables pero muy a menudo vulnerables o con un rendimiento muy pobre y claro, la característica que ése plugin poco eficiente da yo la aprovecho en una línea de código PHP…

Uno empieza a tener los huevos pelados (y perdonad si no soy muy fino pero no conozco ninguna expresión mejor) de arreglar instalaciones de WordPress con problemas de rendimiento, seguridad, etcétera y siempre veo lo mismo: los plugins se llevan 3/4 partes del pastel.

La parte restante suele ser (en orden descendiente): plantillas recargadas, hosting saturado, php como CGI, etcétera…

Mi opinión al respecto creo que ya la he dicho en varias ocasiones en forma de comentarios, pero ahí va:

  • Simplifica: lo que puedas hacer en una línea de PHP o con HTML en la plantilla no lo hagas con un plugin y mil líneas.
  • Informate: si el autor del plugin tiene un feed especifico para ése plugin o un método de obtener las novedades ¡usalo!. Estar informado de las novedades y de los plugins que dan problemas es necesario.
  • Limpia: normalmente plugin que no es imprescindible es prescindible…

Realmente plugins imprescindibles del todo sólo hay dos: Akismet (y ni eso, tienes la opción de moderar todos los comentarios) y WP-Cache (por razones más que obvias), todo lo demás mejor mirarlo con lupa.

Offtopic/idea: un plugin que todavía no existe y en estos casos iría de lujo sería, desde el Dashboard y como administrador, una opción que al añadir una URL (por ejemplo la portada) la genera y muestra que funciones se han ejecutado y cuánto tiempo de CPU han consumido.

Si a ésa idea le añadimos separar el listado por funciones del núcleo (Core) de WordPress y funciones de plugins sería el método ideal para saber qué plugin es el que nos está dando problemas de rendimiento…

Quizá lo que digo es una tontería o hay alguna manera de hacerlo para cualquier código PHP pero yo al menos no la conozco e iría bien algo integrado en un blog para ver qué pasa “en producción”.

14 Comentarios (feed)

  1. Gravatar de Croc Croc nos comenta:

    Eso que pides son herramientas de profiling para PHP (yo las uso para optimizar código en C#), que aunque escasas creo que existen algunas. Desconozco si son sencillas de utilizar o si sería más comodo implementar algún mecanismo dentro del core de WP.

    Ahora mismo tengo 11 plugins activos, entre los que se encuentran WP-Cache (imprescindible por mi escaso HW) y un captcha de texto con comentarios moderados en lugar de Akismet. El resto, son llanamente chorradas y pijadas para hacerlo más bonito. Podría directamente eliminar un par que no me resuelven gran cosa, integrar en la plantilla alguno (como el de la licencia CC, Google Analytics o Gravatar) y conservar el resto que quedase.

    Sin embargo, mientras escribo este comentario me asalta una duda. Un plugin que contiene una única función de pocas líneas y que sólo se invoca desde un único lugar de la plantilla, penaliza más que si inserto dicha función en el propio template? Evidentemente, al sacarlo en plugin me permite reutilizar el código y utilizarlo en varios templates, pero realmente compensa?

    Un saludo!

    Lunes, 27 de Agosto/2007 @ 23:41

  2. Gravatar de magarto magarto nos comenta:

    Lo que me gustaría ese plugin. He pensado en algo así decenas de veces y no es broma

    Martes, 28 de Agosto/2007 @ 1:47

  3. Gravatar de magarto magarto nos comenta:

    … porque con firebug sigo sin enterarme del todo de qué pluigins dan más guerra

    Martes, 28 de Agosto/2007 @ 1:47

  4. Gravatar de aNieto2k aNieto2k nos comenta:

    Buenas Hector, no he podido resistirme a opinar sobre el tema.

    Personalmente creo que estás siendo muy duro con plugins como MoreMoney, un plugin que te empeñas en decir que lo puedes hacer con una línea, cuando no es así. Podrás hacer que las visitas de Google, incluyendo Google Reader (con lo molesto que es…) sean tratadas de una forma similar, pero olvidas las otras funcionalidades extra que el plugin ofrece. Como por ejemplo personalizar los sitios (referers) de los visitantes para mostrar la publicidad.

    Tambien comentas que tienes los h.. pelados (no quiero imaginarmelo…NO!!! :D) de configurar Wordpress y la mayoría de problemas siempre han sido los plugins… por regla de tres no puede ser más normal… 1 theme frente a mínimo 3 plugins (que son “impresindibles”)… normal que sean los plugins.

    La seguridad es un tema pendiente en el desarrollo de aplicaciones web, y debido a que estamos “delante de todo el mundo” siempre se van a encontrar vulnerabilidades. Hasta el sistema más optimizado siempre podrá ser hackeado.

    Está claro que hay que tener cuidado, pero no por ello hay que desmerecer el trabajo demiles de desarrolladores de plugins que dedican su tiempo y su empeño en ofrecer a los demás funcionalidades extra, y que en cuanto chavales como Alex, descubren una vulnerabilidad y dejan lo que hacían para corregirla.

    Solo eso, estoy de acuerdo en que los desarrolladores, bloggers tenemos que sensibilizarnos con este tema, pero encuentro que has sido demasiado duro con los de mi gremio…

    Saludos fiera.

    Por cierto, quita Akismet de los impresindibles y ponlo en los zampa memoria, mejor usar el campo oculto

    Martes, 28 de Agosto/2007 @ 1:53

  5. Gravatar de dimas dimas nos comenta:

    Buenas,

    precisamente por la expectación creada, se me ha ocurrido probar uno de los plugins, who sees ads?, que ha ganado el premio de consolación… y no se si será casualidad pero el caso es que el sitio hace dos horas se me ha caido por los suelos, pantallazos con error interno del servidor. Avisos en el panel de control del hosting sobre el número de procesos corriendo… hasta hoy tenía una uptime de 99.9% ¿coincidencia?

    Martes, 28 de Agosto/2007 @ 2:27

  6. Gravatar de Armonth Armonth nos comenta:

    aNieto2k corregido, sobre lo que comentas de Akismet no sé porqué lo comentas ya que no lo veo muy comedor de memoría ya que la mayor carga se la lleva el servidor centralizado (filtros bayesianos, etcétera).

    Sobre lo que comentas te doy la razón, lo del MoreMoney lo siento por su autor si soy muy duro pero es uno de esos casos que recuerdas a menudo: obviamente mi alternativa no sirve al 100% para lo que hace el plugin pero dado que el uso más habitual que hace de ese plugin la gente que conozco es el mostrar publicidad a buscadores sí es una solución más limpia a esa necesidad en particular.

    Obviamente la parte de código suele ser más responsable que las plantillas, las plantillas suelen usar funciones del core de WordPress y por lo tanto salvo excepciones que quieren hacer “de todo y automáticamente” suelen gastar pocos recursos…

    Eso sí, cualquier función en un momento dado puede consumir recursos de mala manera, incluso la función de mostrar categorías estándar de WordPress puede convertirse en un agujero si lo que hace es mostrar en cada página una lista de 1000 o 2000 categorías (y puedo asegurar que he visto gente que lo hace).

    Sobre desmerecer a los desarrolladores, si te miras el “acerca de” en SigT, mi motivo para elegir WordPress es que es software libre y su inmensa comunidad de desarrolladores, por eso mismo he hecho hincapie en que es injusto generalizar. Lo que sí está claro es que ningún plugin es imprescindible (salvo esos dos y uno se puede quitar con algunas medidas extra).

    Obviamente no puedo desmerecer el trabajo de nadie, una cosa es críticar de forma constructiva y otra hacer el troll y la verdad, dado que mis dotes de programación son bastante bajas tampoco tengo derecho a hacer el troll xD

    Un saludo a ti también :P

    Martes, 28 de Agosto/2007 @ 2:38

  7. Gravatar de Eduo Eduo nos comenta:

    En el artículo original había comentado algo al respecto pero pienso que vale la pena comentarlo aquí también porque a veces no vemos el contexto.

    Antes que nada recordemos que es NORMAL que un programa cualesquiera tenga errores, mejoras y agujeros. No es bueno, ideal ni deseable pero es una realidad. Especialmente proyectos informales hechos por hobby.

    Dejando claro eso queda a veces en manos de la comunidad ayudar y reportar bugs o problemas con la aplicación.

    La etiqueta y el sentido común dictan que quien tiene que saber, antes que nadie, es el autor (es el que los arreglaría, al fin y al cabo) pero si algo hemos aprendido estos días es que reportar problemas de seguridad te da notoriedad y estos días parece que el hambre de destacar está peor que nunca.

    Malo es ya que Buayacorp haya reportado los errores sin incluir mayores detalles y sin contactar a los autores antes, aunque estoy dispuesto a creer que realmente la intención no era propagar FUD al respecto. Debería haber primero visto si alguien lo había reportado y si no comentarselo a los autores.

    Pero luego Carrero va y pone un artículo que realmente transcribe totalmente el artículo completo de buaya, mete un comentario en wltc donde levanta la alarma por problemas de seguridad en los plugins y pega un texto en español que la gente no podrá entender.

    Sin importar si hay razón en cuanto a los problemas de seguridad estas acciones fueron irresponsables. Es justo y exactamente lo que se considera FUD. La justificación de “pero si SI tenía esos problemas de seguridad” es infantil porque hay razones por las que existen mecanismos de “disclosure”.

    Si se reporta al autor y el autor ignora el comentario entonces si se hace publico. Es lo normal y el mundo no se caerá si no recibes algo de tráfico adicional a expensas de los demás.

    A lo mejor todos discrepan conmigo, pero me ha parecido fatal. Los plugins ya están sacando actualizaciones de seguridad y probablemente las habrían sacado antes si les hubieran avisado a tiempo pero, claro, eso no hubiera ayudado a recibir visitas.

    Martes, 28 de Agosto/2007 @ 8:52

  8. Gravatar de Eduo Eduo nos comenta:

    Por cierto, aclaro que estoy de acuerdo en que mantener la seguridad como alta prioridad es indispensable y que los autores deberían haber tenido más cuidado. Eso no quita que esto este siendo llevado fatal.

    Sobre lo de que hayan plugins que añaden funcionalidad básica volvemos a lo de siempre: Asumir que la gente tiene que aprender PHP para llevar un blog no es realista y es arrogante de nuestra parte asumirlo, en mi opinión. Nosotros podemos hacerlo y por lo tanto conocemos la ventaja, de la misma forma que alguien que se haga sus cambios de aceite en casa opina que la gente que lleva el coche a sitios no sabe lo que hace.

    Si alguien llega a hacerle tanto a su blog que tiene que pagarle a alguien porque se lo haga mas rapido pues más trabajo para el contratado. Si lo haces sin que te paguen es el precio por saber.

    Yo no pretendo que sólo porque yo sepa utilizar clientes de torrent en línea de comando y me parezca un desperdicio de recursos del ordenador utilizar un cliente gráfico que no me permite conectarme remotamente, que los demás deban dejar de usar sus uTorrents, Azureuses o Transmissions. Ellos opinarán que mi versión de “lo que es mejor” es diferente a la de ellos y esto mismo aplica aquí.

    Martes, 28 de Agosto/2007 @ 9:01

  9. Gravatar de Armonth Armonth nos comenta:

    Pues Eduo dejando aparte que Alex ya ha dicho varias veces que si no ha hablado primero con los autores ha sido porque estaba preparando varios bugreports completos para ellos, yo si por casualidad encuentrase una vulnerabilidad según dónde (en un plugin) no reaccionaré muy distinto:

    Primero publicaría un post diciendo “recomiendo desactivarlo temporalmente” y de mientras preparo aviso… o aviso y publico pero según lo que sea si el autor no contesta rápido (y para mí rápido son menos de 24h) publico, sin detalles pero publico. O al menos eso pienso.

    Sobre aprender PHP… no hace mucho decía en tono de coña que obligar a usar HTML (mucho más fácil sin duda) es pecado capital. Cony que esto es web 2.0 y se supone que va de eso: comunicación fácil, incluso pa paletos (dicho sin animo de ofensa) xD. Pero sabiendo sí se aplica: si puedes ahorrarte plugins con soluciones más simplistas hazlo (principio KISS).

    Croc: el “overheap” que añaden los plugins es despreciable, si quieres reaprovechar código ponlo como plugin aunque claro siempre será un poquito más rápido (poca diferencia) el código a pelo que metido en una función llamada desde plugin y añadirlo en la plantilla mediante otras funciones o con una comprobación de function_exists() por en medio para no romper la plantilla si se desactiva…

    Mi ejemplo venía a ser “plugin que hace X en 100 líneas” versus “código en plantilla que hace lo mismo con 2 líneas” pero a la hora de poner el mismo código como plugin o como plantilla mejor haz lo que más te convenga…

    PD: Sí, sé que “pocas líneas” no tiene porque significar “código más eficiente” pero es para dar una idea al respecto.

    Martes, 28 de Agosto/2007 @ 15:21

  10. Gravatar de aNieto2k aNieto2k nos comenta:

    Buenas, solo un par de cosillas que no tengo mucho tiempo.

    Lo de Akismet, es simple. Una comprobación y die() mejor que controlar si el mail, el nombre, la url e incluso el contenido está almacenado en una base de datos externa donde se almacenan los todos los comentarios de SPAM del planeta….

    El tema de los plugins VS inclusión en Themes… tengo mis reparos y algún día escribiré sobre como lo tengo montado yo, pero por descontado no podemos pensar en meterlo en el theme por que te está perjudicando en tiempo de modificaciones, el día que quieras cambiar el theme te las vas a ver … los plugins son para esto (entre otras cosas). La mejor solución functions.php, todo en un fichero que lo mueves donde y como quieres.

    Pero llegamos al tema de Eduo, (muy interesante). No me parece nada inteligente pensar que los usuarios tienen que saber php para poder disfrutar de un blog, osea Wordpress es tan fácil de usar que hasta mi hermana (y veo que la tuya tambien lo usa) puede usarlo casi sin tener que explicarle nada, eso no podemos perderlo por que se quieran usar funcionalidades… sería como volver al PhpNuke o phpbb…. que en cada actualización te acordabas de los creadores y de sus madres…

    La web 2.0 ha de favorecer esta integración con el usurio e incluso hacerlo transparente para él. Si por un lado dices que es mejor usar líneas de código que un plugin no digas por otro lado que no es necesario aprender php….

    El tema de la seguridad y las formas de actuar frente a un bug,… creo que cada uno es mayorcito para saber como actuar y lo bien o mal que sepan las visitas resultantes… por lo general (en mi experiencia) siempre que he encontrado un bug lo he reportado al desarrollador y siempre acabas obteniendo un enlace que te aporta menos visitas pero con mejor sabor de boca…Ojo!, que cada uno haga lo que quiera, yo he hecho así y los demás que hagan lo que quieran.

    Por lo demás de acuerdo con todos, la preocupación por la seguridad debería estar más presente por parte de los desarrolladores (yo incluido) y la gente debería pensar que estos <generalizando>desarrolladores lo hacen por pura dedicación </generalizando>

    Menos mal que tenía poco tiempo :D

    Creo que esto va a dar para muuucho más.

    Martes, 28 de Agosto/2007 @ 16:06

  11. Gravatar de alex alex nos comenta:

    Eduo, sólo para aclarar unas cosas:

    - Probé los plugins luego de leer la lista de ganadores en WTC, digo que tienen problemas de seguridad y recomiendo desactivarlos, horas más tarde (mientras dormía) recibo comentarios similares a los tuyos que asumen que yo tenía conocimiento de esos bugs mucho antes y que sólo buscaba publicidad (ni siquiera había pasado 12 horas).

    - En mi opinión, la entrada que publiqué no tiene ni un ápice de un reporte de seguridad como para considerarlo irresponsable.

    Te comento un caso similar: en [1] digo que actualmente existe un problema de seguridad muy grave en WordPress (2.2.2), días más tarde lo reporto a los desarrolladores de este CMS y me dicen que sacaran una versión pronto (todavía no lo han hecho). ¿Fué irresponsable la entrada que publiqué? ¿Ves a alguno de los desarrolladores exaltándose por sólo decir que WordPress tiene bugs graves? ¿Ves a alguien acusándome de hacer FUD?

    En fin, creo que es lo que último que diré al respecto porque ya bastante me satanizaron :D

    [1] http://www.buayacorp.com/archivos/estamos-seguros-con-la-nueva-version-de-wordpress/

    Héctor, ¿podrías borrar el comentario anterior?, no salió completo por dejar un tag abierto.

    Martes, 28 de Agosto/2007 @ 16:23

  12. Gravatar de Sergio Sergio nos comenta:

    de acuerdo, es cierto, a mi google me cerro el mail por 24 horas por usar extensiones de firefox con el mail, osea me espio y se dio cuenta de que usaba esto, asi que nadie se salva!

    Martes, 28 de Agosto/2007 @ 17:59

  13. Gravatar de Eduo Eduo nos comenta:

    Alex: para aclarar un poco comento que quien he implicado todo el tiempo que buscaba publicidad es carrero y no buayacorp. Tu lo pusiste en tu pagina y te creo que les dijiste a los autores. Carrero sin embargo posteó en varios sitios en inglés un comentario que alarmaba en ingles y luego el texto en español. ESA es la parte que es FUD.

    Sin contar ademas que el texto en su entrada (que era la que enlazaba) y en los comentarios en español en sitios en ingles era tu texto.

    Comentar que hay posibles vulnerabilidades, que se ha comunicado a los autores y que se prueben en un ambiente controlado es una cosa. Avisar “habeis visto las vulnerabilidades criticas de estos plugins?” y poner un texto que la gente no puede entender es otra.

    Es la accion del alarmismo de esos comentarios la que me parece fatal y no tu entrada en tu blog. Los comentarios que tuviste en ingles son consecuencia, realmente, de las acciones de carrero y no tuyas.

    Lo siento si se malentendio. No me parece mal que se busquen y comuniquen vulnerabilidades pero hay cierta etiqueta y protocolos para ello y no se cumplieron, que es de lo que me quejaba. Tu texto se utilizo para eso, pero no queria implicar que haya sido tu accion. Incluso aclaro que estoy dispuesto a creer que tu intencion no era alarmista.

    Miércoles, 29 de Agosto/2007 @ 10:57

  14. Gravatar de sekano sekano nos comenta:

    Me instale el plugin Text Link Ads y a la semana ya estaba asqueado con el sistema así que decidi borrarme pero en el panel del sitio web de TLA no habia opción de borrado. Me puse en contacto con ellos para decirselo y aún estoy intentando que me borren.

    En fin, que la cuenta puede estar abierta 10 años si quieren, con eliminar el plugin y el código de mi blog ya está rota toda relación.

    Pues bien, se me ocurrió borrar el puto archivo tla3544.php de la carpeta plugins y el blog se volvió inaccesible y no se cargaba la página cuando hacia login. Suerte que puede acceder por FTP y editar los archivos que contenían referencias al plugin. En caso de no tener acceso FTP esto podría haber sido desastroso.

    Es uno de los plugins más chapuzas y peligrosos que he visto por la blogosfera. Además la gente de TLA te prometen 45 euros por enlace y luego me pagaron 12 euros por 6 enlaces en 2 blogs. Devolví el paypal por si se les ocurría denunciarme ya que no había estado mostrando publicidad más que 5 días. Los tenía reavisados pero no me escuchaban y al terminar el mes van y me ingresan. Ahora ya casi me han dejado en paz pero de vez en cuando me mandan un mensaje diciendo que han detectado que tengo problemas con el plugin y me vuelven a explicar los pasos para reisntalarlo. Los tengo en spam…no me quedaba otra.

    Saludos Armonth, tu insomnio te hace ser muy productivo. Me encanta como acercas la tecnología a los no tan puestos….con mucho humor

    Miércoles, 19 de Septiembre/2007 @ 2:56

No seas tímido, da tu opinión

Sé respetuoso con los demás, la diferencia de opiniones enriquece la discusión, los comentarios bajo ciertas circunstancias pueden ser moderados y requerir aprobación.