Maison  >  Article  >  développement back-end  >  Odeur de code - accroupi

Odeur de code - accroupi

PHPz
PHPzoriginal
2024-08-14 10:38:13704parcourir

N'utilisez pas de noms devinables à l'avance sur les ressources critiques

TL;DR : sécurisez vos ressources cloud en évitant les modèles de dénomination prévisibles.

Problèmes

  • Noms prévisibles

  • Accès non autorisé

  • Risques d'exposition des données

  • Ressources fantômes

  • Reprises de comptes

  • Vulnérabilité Idor

  • Optimisation prématurée

Solutions

  1. Utilisez des noms de compartiment uniques avec des touches sombres

  2. Vérifier la propriété lors de la création

  3. Sécurisez entièrement les ressources

  4. Avoir des indirections masquant les vrais noms

  5. Réservez des noms pour éviter de s'accroupir

  6. Randomiser les noms

Contexte

Le squattage de ressources se produit lorsque les attaquants anticipent les modèles de dénomination des ressources cloud, comme les compartiments S3.

L'attaquant les crée dans des régions où l'utilisateur n'a encore déployé des ressources.

L'interaction des utilisateurs avec ces ressources appartenant à des attaquants peut entraîner de graves failles de sécurité telles que l'exposition de données, un accès non autorisé ou un piratage de compte.

Cette vulnérabilité est critique dans des environnements comme AWS, où des conventions de dénomination prévisibles sont souvent utilisées.

De nombreux systèmes évitent cette indirection craignant une pénalité en termes de performances, ce qui est un cas évident d'optimisation prématurée.

Exemple de code

Faux

def create_bucket(account_id, region):
    bucket_name = f"aws-glue-assets-{account_id}-{region}"
    create_s3_bucket(bucket_name)  
   # This is deterministic and open

Droite

import uuid

def create_bucket(account_id, region):
    unique_id = uuid.uuid4().hex
    # This number is not deterministic
    # is a way to generate a random UUID (Universally Unique Identifier) 
    # in Python and then retrieve it as a hexadecimal string.
    bucket_name = f"aws-glue-assets-{unique_id}-{account_id}-{region}"
    create_s3_bucket(bucket_name)
    verify_bucket_ownership(bucket_name, account_id)

Détection

[X] Automatique

Un audit de sécurité peut détecter cette odeur en analysant les noms de vos ressources à des fins de prévisibilité.

Recherchez des modèles dans les noms qu'un attaquant peut facilement anticiper ou deviner.

De nombreux outils automatisés et révisions manuelles du code peuvent aider à identifier ces risques.

Balises

  • Sécurité

Niveau

[X] Intermédiaire

Génération d'IA

Les générateurs d'IA peuvent créer cette odeur à l'aide de modèles standard avec des modèles de dénomination prévisibles.

Personnalisez et examinez toujours le code généré pour des raisons de sécurité.

Détection IA

L'IA peut aider à détecter cette odeur si elle est configurée avec des règles qui identifient les conventions de dénomination des ressources prévisibles ou non sécurisées.

Il s'agit d'un risque de sécurité qui nécessite une compréhension de l'infrastructure cloud et des vecteurs d'attaque potentiels.

Conclusion

Éviter les modèles de dénomination prévisibles est essentiel pour sécuriser vos ressources cloud.

Utilisez toujours des noms uniques, obscurs et difficiles à deviner, et vérifiez également la propriété des ressources pour vous protéger contre les attaques de squatting.

Rapports

Plus d'informations

Gb Hackers

Wikipédia

Clause de non-responsabilité

Les odeurs de code sont mon opinion.

Crédits

Photo de Félix Koutchinski sur Unsplash


Le seul système véritablement sécurisé est celui qui est éteint et débranché, enfermé dans un coffre-fort doublé de titane, enterré dans un bunker en béton et entouré de gaz neurotoxiques et de gardes armés très bien payés. Même dans ce cas, je ne risquerais pas ma vie là-dessus.

Gène Spafford


Cet article fait partie de la série CodeSmell.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn