50 nuances de sécurité Drupal

  1. Pour le hachage de mot de passe, une version modifiée de phpass est utilisée , dont ils se sont désavoués sur le site officiel. Mais ils ne sont pas pressés de changer le mécanisme [# 1845004] .
  2. Ils ne veulent même pas offrir la possibilité de choisir un mécanisme de hachage [# 2939888] .
  3. Le nombre d'itérations pour la persistance du hachage n'a pas été mis à jour depuis plus de 7 ans [# 1850638] , bien qu'une augmentation des itérations d'au moins 2 ans était attendue [# 1203852] .
  4. Lorsque vous utilisez PostgreSQL, les hachages de mot de passe sont comparés sans tenir compte de la casse [# 2475539] .
  5. PostgreSQL a également des problèmes de support SSL [# 850600] .
  6. La version minimale autorisée de PostgreSQL 9.2, qui a longtemps été sans support de sécurité [# 2846994] .
  7. L'assemblage officiel de Drupal contient des versions obsolètes des bibliothèques des fournisseurs (en raison de la compatibilité avec PHP 5.5). Certains d'entre eux, par exemple Zend, ont même des vulnérabilités connues [# 2989631] .
  8. L'assemblage contient également tous les tests, modules de test, rubriques de test et bibliothèques de fournisseurs pour les tests, ce qui augmente non seulement la taille de l'archive, mais également la zone des lacunes possibles [# 2338671] .
  9. L'idée de déplacer des fichiers exécutables en dehors du site [# 1672986] a également été bloquée .
  10. La vérification des mises à jour est implémentée à l'aide de requêtes GET à l'aide d'un protocole HTTP non sécurisé [# 1538118] . Lors d'une attaque MITM, vous pouvez supprimer tous les liens vers les archives du module (les quantités de domaine et de hachage ne sont pas vérifiées). Vous pouvez également collecter des informations sur la composition du site, la liste des développeurs et leur activité (les demandes des versions locales des sites correspondront sur ip aux comptes sur d.org). Le protocole HTTP vous permet de placer un script pour collecter des informations en dehors de drupal.org.
  11. Un utilisateur avec id = 1 est l'objet le plus savoureux à attaquer, car il a toujours toutes les autorisations qui existent sur le site et a également toutes les tentatives de lui retirer ces droits [# 540008] .
  12. Ce comportement n'est pas entièrement évident, car visuellement dans le panneau d'administration, cet utilisateur n'est pas différent des autres. Mais même une tentative de mettre en évidence cette fonctionnalité n'a abouti à rien [# 572240] .
  13. Tout administrateur ou autre utilisateur disposant des droits nécessaires peut prendre le contrôle de cet utilisateur divin avec id = 1 [# 39636] .
  14. Certains droits donnent implicitement le contrôle sur l'ensemble du site, mais ils ne se distinguent pas non plus [# 2846365] , [# 594412] .
  15. Certains droits peuvent être trompeurs même par leur nom. Par exemple, le droit d'afficher les journaux vous permet en fait de les supprimer [# 1635646] .
  16. La restauration de l'ordre dans les autorisations est depuis longtemps une tâche urgente, mais elle est simplement ignorée [# 2628870] , [# 2667018] .
  17. L'administrateur ne peut pas supprimer l'objet fichier téléchargé par un autre utilisateur, même s'il est malveillant [# 2949017] .
  18. Le hook hook_file_download n'utilise pas le contrôleur approprié lors de la validation [# 2148353] .
  19. La validation des fichiers côté client ne fonctionne pas [# 2938441] .
  20. Faibles contrôles sur le chargement de fichiers arbitraires [# 2543590] , sans parler de toutes sortes de colles RarJpeg.
  21. Certaines vérifications de fichiers reposent uniquement sur la règle .htaccess [# 2829048] .
  22. .Htaccess a également d'autres règles de sécurité qui sont implicitement perdues lors du passage à un autre environnement (en particulier Nginx), mais la mise en œuvre des règles web.config similaires est au point mort [# 154339] , [# 2669870] .
  23. Par défaut, sur n'importe quel site avec Drupal 8, vous pouvez télécharger des images avec une simple demande POST, composée du nom du formulaire d'inscription et du champ avatar de l'utilisateur. Il est à noter que dans Drupal 7, la sortie d'un tel champ a été rejetée par défaut [# 31056] , mais ces jours sont révolus .
  24. Lors du chargement d'un fichier portant le même nom plusieurs fois, un problème survient lié à l'implémentation de l'algorithme de génération de noms de fichiers uniques [# 2684403] .
  25. Le filtrage des adresses d'image est également boiteux. Par conséquent, vous pouvez déconnecter les utilisateurs avec une image avec src = '/ user / logout' [# 144538] , ou implémenter une attaque DOS en plaçant quelques centaines d'images avec src = 'very / hard / page'.
  26. Une autre façon de consommer des ressources consiste à charger des images de 1 000 x 1 dans des champs qui sont traités à l'aide de l'effet «Échelle et recadrage» [# 2931533] , [# 872206] .
  27. Vous pouvez simplement remplir la base de données avec le cache poubelle simplement en triant les URL [# 1245482] , bien que le système de mise en cache enlève parfaitement toutes les ressources pour stocker des résultats qui seraient plus rapides même à partir de zéro [# 2888838] .
  28. Vous pouvez charger le site et remplir les journaux de messages d'erreur à l'aide de demandes spéciales de liens contextuels [# 2864933] .
  29. L'accès aux fichiers et images joints est toujours là, quel que soit l'accès au contenu [# 2904842] .
  30. Les commentaires sur le contenu resteront également disponibles lorsque l'accès au contenu est refusé [# 1781766] .
  31. Vous pouvez savoir si vous pouvez utiliser Zaregan sur le site par le message de récupération de mot de passe [# 1521996] .
  32. Le formulaire de réinitialisation du mot de passe n'est pas protégé contre les inondations [# 1681832] .
  33. Lors de la création et de la vérification des mots de passe, sans aucun avertissement, tous les caractères d'espace blanc ("\ t \ n \ r \ 0 \ x0B") autour de [# 1921576] sont supprimés . Cela peut être une surprise pour l'utilisateur et un petit soulagement pour l'algorithme de recherche.
  34. Si vous n'avez pas la possibilité d'obtenir un hachage de mot de passe pour la force brute, mais qu'il existe une session utilisateur, vous pouvez brutaliser le mot de passe sans restrictions via le compte lui-même, par exemple, en modifiant la boîte aux lettres [# 2339399] .
  35. Soit dit en passant, si cela, l'utilisateur ne sait même pas que sa boîte a été changée, car la tentative de mise en œuvre de cette fonctionnalité est interrompue depuis plusieurs années [# 85494] .
  36. L'algorithme de génération de session est également moyen [# 2238561] .
  37. Les cookies circulent entre les sites situés dans des sous-dossiers [# 2515054] .
  38. Dans certains cas, vous pouvez bloquer les utilisateurs en manipulant les demandes d'entrée de mot de passe incorrecte [# 2449335] .
  39. L'accès à l'édition des modèles Twig vous permet d'avoir un contrôle illimité sur le site [# 2860607] .
  40. L'attaque XSS via les attributs Twig [# 2567743] , [# 2552837] , [# 2544110] est obstinément ignorée .
  41. Vous pouvez également intégrer XSS dans des fichiers d'informations. Par exemple, à travers les champs de description ou de package, qui peuvent être intéressants à exploiter grâce aux fonctionnalités [# 846430] .
  42. L'en-tête de sécurité X-XSS-Protection [# 2868150] n'est pas utilisé.
  43. XSS peut également être transmis via la méthode de reroutage de classe PlainTextOutput, bien que le nom de la classe indique le contraire [# 2896735] .
  44. Il peut également être surprenant que certaines méthodes vérifient et mettent en cache les droits d'accès de l'utilisateur actuel, et non celui qui leur a été transféré [# 2628870] , [# 2266809] .
  45. En raison de paramètres de cache incorrects, vous pouvez empêcher l’utilisateur d’afficher son propre profil [# 2614230] . Une astuce similaire peut être effectuée avec certains paramètres avec à la fois le contenu [# 2982770] et le support [# 2889855] .
  46. Les statistiques des vues des matériaux peuvent être facilement manipulées via la boucle for habituelle dans la console du navigateur, en enroulant des milliers de vues par minute même si vous n'avez pas accès au matériau lui-même. Vous pouvez remonter même des matériaux non encore existants [# 2616330] .
  47. Validation boiteuse des URL externes [# 2691099] , [# 2652236] .
  48. Il n'y a aucune protection complète contre breachattack.com [# 2234243] .
  49. Si vous configurez la stratégie de sécurité du contenu, alors l'éditeur de contenu tombe [# 2789139] .
  50. Ceci est une sélection amateur, ne revendiquant rien. Peut-être que quelqu'un connaît des trous pires? Du 30/01/2019 au 15/10/2020, une prime du budget de l'UE de 89 000,00 € est valable. Vous pouvez essayer de réparer quelque chose. Mais si cela ne fonctionne pas, ne désespérez pas, les manières de ce projet sont formées pour manœuvrer habilement entre les tâches afin de garder Drupal au même endroit pendant des années.

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


All Articles