Blog

Les codeurs conquièrent la sécurité : série Share & Learn - Broken Access Control

May 9, 2019
Jaap Karan Singh

Lorsque vous créez une application métier, que ce soit pour un usage interne ou externe par vos clients, vous ne laissez probablement pas chaque utilisateur exécuter toutes les fonctions. Si vous le faites, vous risquez d'être vulnérable à une violation du contrôle d'accès.

Voyons ce qu'est un contrôle d'accès cassé, pourquoi il est si dangereux et comment y remédier.

Comprenez le contrôle d'accès défaillant

Un contrôle d'accès défaillant se produit lorsque le code de l'application ne dispose pas des contrôles de sécurité ou d'accès appropriés. Cela peut également se produire lorsqu'une application est mal configurée d'une manière ou d'une autre, permettant l'accès à des fonctions ou à des pages auxquelles l'utilisateur ne devrait pas avoir accès.

Si vous gérez les finances de votre entreprise, vous pouvez déposer de l'argent sur certains comptes ou transférer de l'argent entre les comptes de votre entreprise. Cependant, vous ne devriez pas pouvoir retirer de l'argent de ces comptes ou transférer de l'argent vers d'autres comptes. Si les contrôles d'accès appropriés ne sont pas présents, vos employés peuvent être en mesure d'exécuter plus de fonctions que nécessaire.

Ces vérifications peuvent être effectuées soit dans le code, soit dans les fichiers de configuration. Par exemple, certains fichiers de configuration XML peuvent indiquer au framework de l'application Web quels utilisateurs sont autorisés à accéder à quelles pages. Cela garantit que les utilisateurs ne peuvent accéder qu'aux fonctions qu'ils sont autorisés à utiliser.

Pourquoi le contrôle d'accès cassé est dangereux

Prenons cet exemple : un attaquant s'est rendu compte que le code de création de votre compte utilisateur pouvait être manipulé, ce qui lui a permis de créer un utilisateur administrateur à l'aide d'une simple requête de publication. Ils peuvent envoyer une demande avec le nom d'utilisateur et le mot de passe, puis la modifier en cours de route pour inclure le rôle d'administrateur dans l'URL en tant que paramètre, ou dans le corps de la demande. L'attaquant se connecte à l'application et reçoit instantanément des droits d'administrateur.

Il n'est pas toujours nécessaire qu'il s'agisse d'un attaquant malveillant pénétrant un système. Sans contrôles d'accès appropriés, des informations sensibles qui ne devraient pas être partagées entre les services peuvent être divulguées. Imaginez si un employé de l'entreprise pouvait consulter les données de paie des ressources humaines ou les données financières. Que se passerait-il si un employé pouvait constater que des licenciements sont imminents en raison de la mauvaise situation financière de l'entreprise ? Cela pourrait nuire à votre moral et à la réputation de votre entreprise.

Les informations sensibles des clients peuvent également être perdues. Les entreprises stockent souvent les informations personnelles des clients qui utilisent leurs services. Veillez à ne pas l'exposer accidentellement en raison d'un manque de contrôle d'accès. Par exemple, si votre système permet aux utilisateurs de demander leur dossier médical, ont-ils également la possibilité de demander et de consulter les informations médicales d'autres personnes ? Si l'URL contient un numéro d'identification client, les attaquants pourraient incrémenter ce numéro d'identification client encore et encore jusqu'à ce qu'ils en trouvent un qui correspond à un autre client, révélant ainsi leurs données personnelles.

Éliminez le contrôle d'accès défaillant

Le contrôle d'accès basé sur les rôles (RBAC) est un outil très efficace pour mettre en œuvre un contrôle d'accès efficace. Les utilisateurs d'Active Directory connaissent peut-être l'idée de création de groupes et en donnant accès à certains éléments à l'ensemble du groupe, plutôt qu'à l'individu. Les applications fonctionnent de la même manière, en utilisant des rôles pour définir qui est autorisé à voir quoi.

Cela présente deux avantages. Tout d'abord, il n'est pas nécessaire de modifier une fonction lorsque quelqu'un quitte le rôle d'administrateur. Si quelqu'un était auparavant administrateur et ne devrait plus l'être maintenant, il vous suffit de placer une nouvelle personne dans le rôle d'administrateur et de retirer la personne précédente de ce rôle. Le code vérifie si l'utilisateur a le rôle d'administrateur au lieu de vérifier si chaque utilisateur a accès à une certaine page ou fonction.

Le deuxième avantage est d'éviter un cauchemar en matière de maintenance. Un contrôle d'accès si granulaire que chaque personne est associée à toutes les fonctions ou pages possibles sera impossible à gérer au fil du temps. Les rôles simplifient grandement les choses, car plusieurs personnes peuvent être ajoutées à un rôle. Un rôle peut inclure l'ensemble de l'entreprise, tandis qu'un autre peut n'avoir que cinq personnes. Cela rend la gestion des rôles plus efficace, car il y aura moins de rôles à gérer. Une entreprise de 10 000 personnes pourrait n'avoir que 100 rôles au lieu de 10 000 fois le nombre de fonctions de votre candidature. Recherchez le framework d'application que vous avez choisi pour découvrir les options disponibles pour un contrôle d'accès robuste.

Il est également essentiel d'utiliser le contrôle d'accès au niveau des fonctions. Protégez l'accès à toutes les fonctions en demandant aux utilisateurs de passer certaines vérifications de contrôle d'accès. Appliquez le principe du moindre privilège, en refusant l'accès par défaut et en n'ouvrant l'accès qu'en cas de besoin. Il peut être difficile de se souvenir de la mise en œuvre du contrôle d'accès pour chaque fonction. Utilisez un composant central pour gérer et appliquer le contrôle d'accès.

Protégez vos fonctions sensibles

Un contrôle d'accès défaillant peut exposer vos données et votre application à des attaques et à des exploitations. Les données clients qui ne sont pas correctement protégées peuvent entraîner une violation de données massive, nuisant à votre réputation et à vos revenus.

Un contrôle d'accès défaillant peut également entraîner une prise de contrôle du compte si les attaquants parviennent à accéder à des fonctionnalités auxquelles ils ne devraient pas accéder. Utilisez un contrôle d'accès au niveau fonctionnel approprié et vous protégerez votre application contre les attaquants malveillants, et même contre les initiés accidentels.

Vous pensez être un adepte de l'accès au niveau fonctionnel ? Vous pouvez vous lancer le défi de réparer un contrôle d'accès cassé dès maintenant : [Commencez ici]

Slogan

Govern AI-driven development before it ships

Measure AI-assisted risk, enforce secure coding policy at commit, and accelerate secure delivery across your SDLC.

book a demo
Slogan

Explore more blogs

Lorem ipsum diam quis enim lobortis scelerisque fermentum dui faucibus in ornare quam viverra orci sagittis eu volutpat odio facilisis.

browse all
Case Study
Filter Label
This is some text inside of a div block.

Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

Learn More
Case Study
Filter Label
This is some text inside of a div block.

Security as culture: How Blue Prism cultivates world-class secure developers

Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

Learn More
Case Study
Filter Label
This is some text inside of a div block.

One Culture of Security: How Sage built their security champions program with agile secure code learning

Discover how Sage enhanced security with a flexible, relationship-focused approach, creating 200+ security champions and achieving measurable risk reduction.

Learn More
Blog
Filter Label
This is some text inside of a div block.

Enabler 7: Developer Recognition

Recognition fuels participation. Enabler 7 celebrates developer achievement loudly, with rewards and exclusive swag that mark real, earned secure coding wins.

Learn More
Blog
Filter Label
This is some text inside of a div block.

Named in the Gartner® Hype Cycle™ for Application Security 2026

Secure Code Warrior is named in the Gartner® Hype Cycle™ for Application Security, 2026 for Agentic Coding Security and Secure Coding Training. Here's why.

Learn More
Blog
Filter Label
This is some text inside of a div block.

Are you a CISO or Engineering Leader worried about the Security and Cost of LLM code generation?

Review the SCW AI Trust Index, our proprietary LLM benchmarking data, before going all-in on an AI model.

Learn More

Secure AI-driven development before it ships

See developer risk, enforce policy, and prevent vulnerabilities across your software development lifecycle.

Réserver une démo
trust score
No items found.