En-tête négligent

Le contrôle d'accès bien fait : Guide de l'ingénieur en sécurité sur l'autorisation

Contrôle d'accès est la discipline de sécurité qui détermine qui est autorisé à faire quoi et dans quelles conditions entre les systèmes, les applications et les données. En matière de cybersécurité, le contrôle d'accès n'est pas une simple liste de permissions statiques, c'est un processus de contrôle d'accès. mécanisme d'exécution axé sur les politiques La logique de contrôle d'accès est un système de médiation qui gère chaque demande de ressource en fonction de l'identité, du contexte et des règles configurées. Une logique de contrôle d'accès inadéquate ou incorrecte est l'une des principales causes de violations majeures et d'exposition de données non autorisées. owasp.org

Cet article déconstruit le contrôle d'accès du point de vue de l'ingénieur et de l'attaquant, en s'appuyant sur des normes de sécurité faisant autorité, sur des cas réels de CVE et sur des stratégies défensives pratiques.

Ce que signifie réellement le contrôle d'accès

En matière de sécurité, le contrôle d'accès (également connu sous le nom d'autorisation) fait référence à la médiation de l'accès aux ressources sur la base de l'identité et de la politique. Il détermine si un sujet (utilisateur, processus ou système) doit se voir accorder l'accès à un objet (tel qu'un fichier, un point de terminaison API, un enregistrement de base de données ou une fonction métier). Contrairement à l'authentification-qui vérifie l'identité - le contrôle d'accès vérifie autorisations et intentions. owasp.org

À la base, le contrôle d'accès met en œuvre le principe "principe du moindre privilège"Chaque sujet ne doit avoir que l'accès nécessaire à l'accomplissement de sa fonction, rien de plus. owasp.org

Un contrôle d'accès inadéquat peut conduire à une escalade des privilèges, à la divulgation non autorisée d'informations sensibles et à la compromission totale de l'intégrité du système.

Le contrôle d'accès bien fait : Guide de l'ingénieur en sécurité sur l'autorisation

Paysage des menaces : comment le contrôle d'accès se brise dans la nature

Les modèles modernes de menaces applicatives placent systématiquement le contrôle d'accès en tête des listes de risques. Dans les cadres de risques actuels de l'OWASP (y compris le Top 10 et les contrôles proactifs), rupture du contrôle d'accès reste une catégorie de vulnérabilité persistante et critique. owasp.org

Les vecteurs de menace les plus courants en matière de contrôle d'accès sont les suivants :

  • Références directes non sécurisées (IDOR) - les utilisateurs peuvent accéder à des enregistrements qu'ils ne devraient pas en manipulant les identifiants. owasp.org
  • Contournement des contrôles d'autorisation par la falsification d'URL - les attaquants modifient les paramètres pour obtenir un accès non autorisé. owasp.org
  • Logique d'autorisation par défaut incorrecte - les systèmes ne parviennent pas à rejeter des demandes non spécifiées. top10proactive.owasp.org
  • Élévation de privilèges - les attaquants obtiennent des rôles ou des actions plus importants que prévu. owasp.org
  • Manipulation de JWT ou falsification de session - modifier les jetons pour obtenir des privilèges non autorisés. owasp.org

Ces menaces apparaissent fréquemment dans les API web, les SPA, les microservices et les environnements cloud.

Le contrôle d'accès bien fait : Guide de l'ingénieur en sécurité sur l'autorisation

Comparaison des principaux modèles de contrôle d'accès

Les différents modèles offrent un équilibre variable entre la simplicité, l'expressivité et la sécurité :

ModèleConcept de baseMeilleure adaptationFaiblesse
DAC (contrôle d'accès discrétionnaire)Les propriétaires définissent l'accèsApplications simplesRisque de dérive des privilèges
MAC (Mandatory Access Control)Application centrale de la politiqueSécurité élevéeRigide
RBAC (contrôle d'accès basé sur les rôles)Droits par rôleSystèmes d'entrepriseExplosion de rôle
ABAC (contrôle d'accès basé sur les attributs)Attributs à grain finCloud/Zero trustComplexe
PBAC (contrôle d'accès basé sur des règles)Politiques déclarativesMicroservices modernesNécessite de l'outillage

Dans les grands systèmes distribués à plusieurs locataires, ABAC et PBAC sont généralement plus expressifs et plus sûrs que la simple RBAC, en particulier lorsque le contexte et l'environnement sont importants.

Exemple réel de CVE : Contrôle d'accès défaillant dans une API majeure

Une vulnérabilité importante en matière de contrôle d'accès (basée sur des modèles décrits dans les cadres OWASP) existait dans une API d'entreprise populaire où certains points de terminaison ne disposaient pas de contrôles d'autorisation cohérents. Cela permettait aux attaquants d'énumérer et d'accéder aux données d'autres utilisateurs en modifiant les paramètres de la demande sans contrôle approprié.

Bien que l'identifiant spécifique varie, ces défauts correspondent généralement aux éléments suivants CWE-862 : Autorisation manquante et CWE-863 : Autorisation incorrecteCes faiblesses sont répertoriées dans l'ASVS en tant que faiblesses clés du contrôle d'accès. top10proactive.owasp.org

Cela démontre que même les API largement adoptées peuvent ne pas réussir à appliquer la politique de manière uniforme, en particulier lorsque la logique d'autorisation est mise en œuvre de manière ad hoc entre les services.

Concevoir un contrôle d'accès qui fonctionne

Un contrôle d'accès robuste nécessite une stratégie à plusieurs niveaux :

  1. Centraliser la logique d'autorisation

Chaque demande d'accès devrait passer par un point centralisé d'application de la politique afin d'éviter les contrôles incohérents. Éviter de disperser les contrôles d'autorisation entre plusieurs modules ou conditionnels ad hoc. top10proactive.owasp.o

Exemple (intergiciel Node.js/Express) :

javascript

function enforcePolicy(req, res, next) {const { user, resource } = req;if (!policy.canAccess(user, resource)) {return res.status(403).json({ error : "Forbidden" }) ; }next() ; } app.use(enforcePolicy) ;

Appliquer le refus par défaut

Un système sécurisé doit refuser l'accès à moins qu'il ne soit explicitement autorisé. Les politiques manquantes ou mal formées ne doivent pas accorder l'accès par défaut. top10proactive.owasp.org

Utiliser le moindre privilège et un champ d'application limité dans le temps

N'accorder que les autorisations minimales nécessaires pour la durée la plus courte possible. Pour les opérations privilégiées, mettre en œuvre Juste à temps (JIT) et Accès juste assez (JEA) mécanismes. top10proactive.owasp.org

Journalisation et surveillance

L'enregistrement des décisions de contrôle d'accès permet de détecter les activités anormales ou malveillantes. Une conception minutieuse des journaux facilite l'analyse post-incident et la conformité continue. cheatsheetseries.owasp.org

Contrôle d'accès dans les API et les microservices

Dans les architectures distribuées modernes, l'application du contrôle d'accès est plus complexe :

  • Chaque API doit vérifier l'accès de manière indépendante, même si des composants en amont l'ont déjà vérifié.
  • Les services de gestion des identités et des accès (IAM) doivent s'aligner sur la logique de l'application.
  • Les microservices doivent partager un modèle de confiance cohérent afin d'éviter les conflits de politiques.

Une défaillance à l'un de ces niveaux entraîne souvent l'escalade horizontale ou verticale des privilèges.

Tableau : Modèles d'échec typiques du contrôle d'accès

Type de défaillanceManifestationImpact
IDORL'utilisateur modifie l'identifiant de la ressource dans l'URLFuite de données
Pas de refus appliquésVérifications manquantes pour les points de terminaison "admin only".L'escalade des privilèges
Fuite des rôlesRôles trop larges accordés aux utilisateursAccès non autorisé
Mauvaise configuration de CORSAPI accessibles à partir d'origines non fiablesExfiltration de données

Chacun de ces modèles correspond à des comportements à risque documentés dans les normes de sécurité publiées. owasp.org

Exemples de code illustratifs : Attaque et défense

Contrôle d'accès manquant (IDOR)

Vulnérable :

javascript

app.get("/orders/:id", (req, res) => { res.json(db.orders[req.params.id]) ; }) ;

Défense :

javascript

if (order.owner !== req.user.id) {return res.status(403).send("Forbidden") ; }

Risque de manipulation des JWT

Dangereux :

javascript

const token = jwt.sign({ role : "admin" }, secret) ;

Plus sûr :

javascript

const payload = { role : user.role };const token = jwt.sign(payload, secret, { expiresIn : '15m' }) ;

Veiller à ce que les demandes de jetons soient validées sur le serveur, et non simplement approuvées à l'aveugle.

Vérification de la politique de l'ABAC

python

def check_access(user, resource, action, context) :

return (user.department == resource.department

et context.time < resource.expiry)

Les moteurs politiques permettent des décisions contextuelles plus riches.

Penligent : Découverte des risques liés au contrôle d'accès par l'IA

Dans les bases de code volumineuses et les environnements dynamiques, les bogues de contrôle d'accès se cachent souvent au cœur de la logique d'entreprise ou des intégrations de services. Les scanners traditionnels ont du mal à les traiter car ils manquent de contexte sémantique.

La plateforme de pentesting de Penligent, alimentée par l'IA comble cette lacune en

  • Identification automatique des contrôles d'accès incohérents ou manquants dans les API
  • Simulation de voies d'attaque permettant de contourner des contrôles moins stricts
  • Corrélation entre les schémas d'accès et la logique de l'entreprise afin de mettre en évidence les risques d'exposition.
  • Produire des rapports exploitables en fonction des normes de sécurité (OWASP Top 10, ASVS)

Pour les équipes d'ingénieurs, cela signifie une détection plus rapide des chemins d'autorisation malveillants et des cycles de remédiation plus courts.

Meilleures pratiques en matière de tests de contrôle d'accès

  • Inclure des contrôles d'accès dans les tests unitaires et d'intégration. cheatsheetseries.owasp.org
  • Traiter la logique de la politique comme du code : version, test, audit.
  • Utiliser des cadres et des bibliothèques normalisés plutôt que des vérifications ad hoc.
  • Appliquer des politiques sur les deux niveau de fonctionnement et niveau des données comme le recommandent les cadres de l'ASVS. cheatsheetseries.owasp.org

Conclusion : Le contrôle d'accès renforce la confiance, pas seulement les autorisations

En 2025 et au-delà, le contrôle d'accès est un élément fondamental de la fiabilité des systèmes. Il recoupe l'identité, la politique, le contexte et l'application, et les mauvaises implémentations continuent d'être exploitées dans des incidents réels. En fondant votre logique d'autorisation sur des principes de sécurité documentés et en les associant à des tests automatisés basés sur l'IA, vous pouvez prévenir de nombreuses catégories de compromis avant même qu'ils n'atteignent la production.

Partager l'article :
Articles connexes
fr_FRFrench