50 sombras de seguridad Drupal

  1. Para el hashing de contraseñas, se utiliza una versión modificada de phpass , de la que han repudiado en el sitio web oficial. Pero no tienen prisa por cambiar el mecanismo [# 1845004] .
  2. Ni siquiera quieren ofrecer la opción de elegir un mecanismo de hashing [# 2939888] .
  3. El número de iteraciones para la persistencia hash no se ha actualizado durante más de 7 años [# 1850638] , aunque se esperaba que las iteraciones aumentaran al menos 2 años [# 1203852] .
  4. Cuando se usa PostgreSQL, los hash de contraseña se comparan entre mayúsculas y minúsculas [# 2475539] .
  5. PostgreSQL también tiene problemas de soporte SSL [# 850600] .
  6. La versión mínima permitida de PostgreSQL 9.2, que ha estado sin soporte de seguridad durante mucho tiempo [# 2846994] .
  7. El ensamblaje oficial de Drupal contiene versiones desactualizadas de bibliotecas de proveedores (debido a la compatibilidad con PHP 5.5). Algunos de ellos, por ejemplo Zend, incluso tienen vulnerabilidades conocidas [# 2989631] .
  8. También en el ensamblaje se encuentran todas las pruebas, módulos de prueba, temas de prueba y bibliotecas de proveedores para pruebas, lo que aumenta no solo el tamaño del archivo, sino también el área de posibles vacíos [# 2338671] .
  9. La idea de mover archivos ejecutables fuera del sitio [# 1672986] también se estancó .
  10. La búsqueda de actualizaciones se implementa mediante solicitudes GET mediante un protocolo HTTP inseguro [# 1538118] . Durante un ataque MITM, puede eliminar los enlaces a los archivos del módulo (no se verifican las cantidades de dominio y hash). También puede recopilar información sobre la composición del sitio, la lista de desarrolladores y su actividad (las solicitudes de las versiones locales de los sitios coincidirán en ip con las cuentas en d.org). El protocolo HTTP le permite colocar un script para recopilar información fuera de drupal.org.
  11. Un usuario con id = 1 es el objeto más sabroso para atacar, porque siempre tiene todos los permisos que existen en el sitio y también tiene todos los intentos de despojarlo de estos derechos [# 540008] .
  12. Este comportamiento no es del todo obvio, porque visualmente en el panel de administración este usuario no es diferente de los demás. Pero incluso un intento de resaltar esta característica terminó en nada [# 572240] .
  13. Cualquier administrador u otro usuario con los derechos necesarios puede tomar el control de este usuario divino con id = 1 [# 39636] .
  14. Ciertos derechos implícitamente otorgan control sobre todo el sitio, pero tampoco se destacan de ninguna manera [# 2846365] , [# 594412] .
  15. Algunos derechos pueden ser engañosos incluso por su nombre. Por ejemplo, el derecho a ver los registros realmente le permite eliminarlos [# 1635646] .
  16. Restaurar el orden en los permisos ha sido durante mucho tiempo una tarea urgente, pero simplemente se ignora [# 2628870] , [# 2667018] .
  17. El administrador no puede eliminar el objeto de archivo descargado por otro usuario, sin importar cuán malicioso sea [# 2949017] .
  18. El hook hook_file_download no utiliza el controlador apropiado durante la validación [# 2148353] .
  19. La validación de archivos en el lado del cliente no funciona [# 2938441] .
  20. Comprobaciones débiles sobre la carga de archivos arbitrarios [# 2543590] , sin mencionar todo tipo de pegamentos RarJpeg.
  21. Algunas comprobaciones de archivos se basan únicamente en la regla .htaccess [# 2829048] .
  22. .Htaccess tiene suficientes otras reglas de seguridad que se pierden implícitamente al cambiar a otro entorno (especialmente Nginx), pero la implementación de reglas similares de web.config se ha estancado [# 154339] , [# 2669870] .
  23. De manera predeterminada, en cualquier sitio con Drupal 8, puede cargar imágenes con una simple solicitud POST, que consiste en el nombre del formulario de registro y el campo de avatar del usuario. Cabe destacar que en Drupal 7 la salida de dicho campo fue rechazada por defecto [# 31056] , pero esos días han terminado.
  24. Al cargar un archivo con el mismo nombre varias veces, surge un problema relacionado con la implementación del algoritmo para generar nombres de archivo únicos [# 2684403] .
  25. El filtrado de direcciones de imagen también es poco convincente. Por lo tanto, puede cerrar la sesión de los usuarios con una imagen con src = '/ user / logout' [# 144538] , o implementar un ataque de DOS colocando un par de cientos de imágenes con src = 'very / hard / page'.
  26. Otra forma de consumir recursos es cargar imágenes de 1000x1 en los campos que se procesan con el efecto "Escalar y recortar" [# 2931533] , [# 872206] .
  27. Simplemente puede llenar la base de datos con el caché de basura simplemente ordenando las URL [# 1245482] , aunque el sistema de almacenamiento en caché elimina perfectamente todos los recursos para almacenar resultados que serían más rápidos incluso desde cero [# 2888838] .
  28. Puede cargar el sitio y llenar los registros con mensajes de error mediante solicitudes especiales de enlaces contextuales [# 2864933] .
  29. El acceso a los archivos e imágenes adjuntos siempre está ahí, independientemente del acceso al contenido [# 2904842] .
  30. Los comentarios sobre el contenido también permanecerán disponibles cuando se deniegue el acceso al contenido [# 1781766] .
  31. Puede averiguar si puede usar Zaregan en el sitio mediante el mensaje de recuperación de contraseña [# 1521996] .
  32. El formulario de restablecimiento de contraseña no está protegido contra inundaciones [# 1681832] .
  33. Al crear y verificar las contraseñas, sin previo aviso, todos los espacios en blanco ("\ t \ n \ r \ 0 \ x0B") alrededor de [# 1921576] se eliminan . Esto puede ser una sorpresa para el usuario y un pequeño alivio para el algoritmo de búsqueda.
  34. Si no tiene la oportunidad de obtener un hash de contraseña para fuerza bruta, pero hay una sesión de usuario, puede ingresar la contraseña sin restricciones a través de la cuenta misma, por ejemplo, cambiando el buzón [# 2339399] .
  35. Por cierto, si eso es así, el usuario ni siquiera sabe que su casilla ha sido cambiada, ya que el intento de implementar esta característica se ha detenido durante varios años [# 85494] .
  36. El algoritmo de generación de sesión también es regular [# 2238561] .
  37. Las cookies fluyen entre sitios ubicados en subcarpetas [# 2515054] .
  38. En algunos casos, puede bloquear usuarios manipulando las solicitudes de ingreso de contraseña incorrecta [# 2449335] .
  39. El acceso a la edición de plantillas de Twig le permite obtener un control ilimitado sobre el sitio [# 2860607] .
  40. El ataque XSS a través de los atributos Twig [# 2567743] , [# 2552837] , [# 2544110] se ignora obstinadamente .
  41. También puede incrustar XSS en archivos de información. Por ejemplo, a través de los campos de descripción o paquete, que pueden ser interesantes para explotar a través de las características [# 846430] .
  42. El encabezado de seguridad X-XSS-Protection [# 2868150] no se utiliza.
  43. XSS también se puede enviar a través del método de redireccionamiento de clase PlainTextOutput, aunque el nombre de la clase dice lo contrario [# 2896735] .
  44. También puede ser una sorpresa que algunos métodos verifiquen y almacenen en caché los derechos de acceso del usuario actual, y no el que se les transfirió [# 2628870] , [# 2266809] .
  45. Debido a la configuración incorrecta de la memoria caché, puede hacer que sea imposible para el usuario ver su propio perfil [# 2614230] . Se puede hacer un truco similar con ciertas configuraciones con contenido [# 2982770] y medios [# 2889855] .
  46. Las estadísticas de las vistas de material se pueden manipular fácilmente a través del bucle for habitual en la consola del navegador, lo que genera miles de vistas por minuto, incluso si no tiene acceso al material en sí. Puede terminar incluso los materiales aún no existentes [# 2616330] .
  47. Valida validación de URL externas [# 2691099] , [# 2652236] .
  48. No hay protección total contra breachattack.com [# 2234243] .
  49. Si configura la Política de seguridad de contenido, el editor de contenido se cae [# 2789139] .
  50. Esta es una selección de aficionados, sin reclamar nada. Tal vez alguien conoce peores agujeros? Del 30/01/2019 al 15/10/2020, una recompensa del presupuesto de la UE de 89,000.00 € es válida. Puedes intentar arreglar algo. Pero si no funciona, no se desespere, los modales de este proyecto están capacitados para maniobrar hábilmente entre tareas para mantener a Drupal en un solo lugar durante años.

Source: https://habr.com/ru/post/437820/


All Articles