Les codeurs conquièrent la sécurité Série Infrastructure as Code : Contrôle d'accès au niveau des fonctions manquantes
Il est temps de lire le prochain épisode de notre série Infrastructure as Code, les blogs qui amèneront les développeurs comme vous à un tout nouveau niveau de sensibilisation à la sécurité lors du déploiement d'une infrastructure sécurisée au sein de votre propre organisation.
Au fait, comment avez-vous relevé le défi de la mauvaise configuration de la sécurité dans le blog précédent ? Si vous souhaitez vous attaquer dès maintenant à une vulnérabilité de contrôle d'accès fonctionnel manquante, rendez-vous sur la plateforme :
(Le lien ci-dessus vous mènera au défi Kubernetes, mais une fois sur la plateforme, utilisez le menu déroulant pour choisir entre Ansible, CloudFormation, Terraform ou Docker. À vous de choisir).
Presque toutes les applications déployées aujourd'hui disposent d'un mécanisme de contrôle d'accès qui vérifie si l'utilisateur a le droit d'exécuter les fonctions demandées. C'est la pierre angulaire d'une bonne sécurité et d'une bonne fonctionnalité lors de la création d'une application. En fait, toutes les applications web ont besoin de contrôles d'accès afin de permettre à des utilisateurs ayant des privilèges différents d'utiliser le programme.
Des problèmes peuvent toutefois survenir lorsque ces mêmes fonctions de vérification du contrôle d'accès ne sont pas exécutées au niveau de l'infrastructure ou sont mal configurées. Si le contrôle d'accès au niveau de l'infrastructure n'est pas parfaitement en ordre, toute l'entreprise est ouverte aux pirates informatiques, qui peuvent utiliser cette vulnérabilité comme porte d'entrée pour un espionnage non autorisé ou une attaque complète.
En fait, il est extrêmement facile d'exploiter les vulnérabilités du contrôle d'accès aux fonctions manquantes ou mal configurées. Les attaquants n'ont même pas besoin d'être très habiles. Il leur suffit de savoir quelles commandes exécutent les fonctions dans le cadre de l'application, quel qu'il soit. S'ils le font, c'est juste une question d'essais et d'erreurs. Ils peuvent continuellement soumettre des requêtes qui ne devraient pas être autorisées, et dès que l'une d'entre elles réussit, le site web, l'application, le serveur ou même l'ensemble du réseau ciblé peut être exposé.
Comment fonctionnent les exploits de contrôle d'accès aux fonctions manquantes ?
Les contrôles d'accès au niveau des fonctions peuvent s'infiltrer dans une organisation de plusieurs manières. Par exemple, l'accès au niveau de la fonction peut être laissé à une application et ne pas être vérifié par l'infrastructure sous-jacente. Le contrôle d'accès au niveau de l'infrastructure peut également être mal configuré. Dans certains cas, les administrateurs supposent que les utilisateurs non autorisés ne sauront pas comment accéder aux ressources de l'infrastructure que seuls les utilisateurs de niveau supérieur devraient pouvoir voir et utilisent un modèle de "sécurité par l'obscurité" qui fonctionne rarement.
Pour un exemple de sécurité par l'obscurité, l'URL suivante est probablement vulnérable à une attaque :
http://companywebsite.com/app/NormalUserHomepage
Si un utilisateur authentifié utilise une technique appelée "Forced URL Browsing", il peut essayer d'atteindre une page qui n'est affichée qu'aux administrateurs. Voici un exemple :
http://companywebsite.com/app/AdminPages
S'il n'existe pas de vérification côté serveur, l'attaquant se verra simplement présenter la page d'administration (si son nom correspond à la demande) et aura alors accès à toutes les fonctions supplémentaires que les administrateurs exécutent à partir de la nouvelle page. Si le serveur renvoie une erreur "page non trouvée" à l'attaquant, celui-ci peut simplement continuer à essayer jusqu'à ce qu'il trouve le nom de la page d'administration.
Pour les attaquants, l'exploitation des contrôles d'accès manquants au niveau des fonctions est un processus similaire. Au lieu d'essayer de parcourir des pages non autorisées, ils envoient des demandes de fonctions. Par exemple, ils peuvent essayer de créer un nouvel utilisateur avec des droits d'administrateur. Leur demande ressemblerait donc à quelque chose comme ceci, selon le cadre de travail :
POST/action/createuser name=hacker&pw=password&role=admin
S'il n'existe pas de contrôle d'accès au niveau de la fonction, l'exemple ci-dessus aboutirait et un nouveau compte d'administrateur serait créé. Une fois que l'attaquant s'est reconnecté en tant que nouvel administrateur, il dispose des mêmes accès et autorisations que n'importe quel autre administrateur sur ce réseau ou ce serveur.
La solution aux contrôles d'accès manquants au niveau des fonctions
Parce qu'il est si facile pour les attaquants d'exploiter les vulnérabilités du contrôle d'accès au niveau des fonctions manquantes, il est essentiel qu'elles soient trouvées, corrigées et évitées. Heureusement, cela n'est pas trop difficile avec un peu de savoir-faire et une formation de base à la sécurité de l'Infrastructure as Code.
La principale protection viendra de la mise en œuvre d'une autorisation basée sur les rôles au niveau de l'infrastructure. Ne confiez jamais cette fonction aux applications. Même si elles le font, une autorisation au niveau de l'infrastructure permettra de s'assurer que rien n'a été oublié. Idéalement, l'autorisation devrait provenir d'un emplacement centralisé (par exemple, AWS IAM, Azure IAM, etc.) qui est intégré dans la routine de votre organisation et appliqué à chaque nouvelle application. Ces processus d'autorisation peuvent provenir du framework lui-même ou d'un certain nombre de modules externes faciles à utiliser.
Enfin, votre organisation devrait adopter le concept du moindre privilège. Toutes les actions et fonctions doivent être refusées par défaut, le processus d'autorisation étant utilisé pour donner aux utilisateurs valides la permission de faire ce dont ils ont besoin. Ils ne doivent recevoir que les autorisations nécessaires à l'exécution de la fonction requise, et uniquement pour la durée nécessaire.
L'absence de contrôles d'accès au niveau de la fonction peut être dévastatrice. Heureusement, en intégrant de bonnes pratiques d'autorisation au niveau de l'infrastructure dans votre organisation, vous pouvez facilement empêcher ce problème de se produire.
Vous pensez être prêt à repérer un bogue de contrôle d'accès dans la nature ? Comparez ces extraits de code Docker, l'un vulnérable, l'autre sécurisé :
Vulnérable :
FROM quay.io/prometheus/busybox:latest
ARG VERSION=0.12.1
ARG FILENAME=mysqld_exporter-${VERSION}.linux-amd64
ARG URL=https://github.com/prometheus/mysqld_exporter/releases/download/v
RUN wget $URL$VERSION/$FILENAME.tar.gz && \
tar -xvf $FILENAME.tar.gz && \
mv $FILENAME/mysqld_exporter /bin/mysqld_exporter
COPY .my.cnf /home/.my.cnf
COPY ./scripts/entrypoint.sh ~/entrypoint.sh
USER root
EXPOSE 9104
ENTRYPOINT [ "sh", "~/entrypoint.sh" ]
CMD [ "/bin/mysqld_exporter" ]
Sécurisé :
FROM quay.io/prometheus/busybox:latest
ARG VERSION=0.12.1
ARG FILENAME=mysqld_exporter-${VERSION}.linux-amd64
ARG URL=https://github.com/prometheus/mysqld_exporter/releases/download/v
RUN wget $URL$VERSION/$FILENAME.tar.gz && \
tar -xvf $FILENAME.tar.gz && \
mv $FILENAME/mysqld_exporter /bin/mysqld_exporter
COPY .my.cnf /home/.my.cnf
COPY ./scripts/entrypoint.sh ~/entrypoint.sh
USER nobody
EXPOSE 9104
ENTRYPOINT [ "sh", "~/entrypoint.sh" ]
CMD [ "/bin/mysqld_exporter" ]
Apprenez-en plus, lancez-vous des défis
Consultez les pages du Secure Code Warrior pour en savoir plus sur cette vulnérabilité et sur la manière de protéger votre organisation et vos clients contre les ravages causés par d'autres failles de sécurité et vulnérabilités.
Et si vous l'avez manqué plus tôt, vous pouvez essayer un défi de sécurité gamifié de l'IaC sur la plateforme Secure Code Warrior pour garder toutes vos compétences en cybersécurité aiguisées et à jour.
Restez à l'écoute pour le prochain chapitre !


Si le contrôle d'accès au niveau de l'infrastructure n'est pas parfaitement ordonné, toute l'entreprise est ouverte aux attaquants, qui peuvent utiliser cette vulnérabilité comme porte d'entrée pour un espionnage non autorisé ou une attaque complète.
Matias Madou est expert en sécurité, chercheur, directeur technique et cofondateur de Secure Code Warrior. Matias a obtenu son doctorat en sécurité des applications à l'université de Gand, en se concentrant sur les solutions d'analyse statique. Il a ensuite rejoint Fortify aux États-Unis, où il s'est rendu compte qu'il ne suffisait pas de détecter les problèmes de code sans aider les développeurs à écrire du code sécurisé. C'est ce qui l'a incité à développer des produits qui aident les développeurs, allègent le fardeau de la sécurité et dépassent les attentes des clients. Lorsqu'il n'est pas à son bureau en tant que membre de l'équipe Awesome, il aime être sur scène pour présenter des conférences, notamment RSA Conference, BlackHat et DefCon.

Secure Code Warrior est là pour vous aider à sécuriser le code tout au long du cycle de vie du développement logiciel et à créer une culture dans laquelle la cybersécurité est une priorité. Que vous soyez responsable AppSec, développeur, CISO ou toute autre personne impliquée dans la sécurité, nous pouvons aider votre organisation à réduire les risques associés à un code non sécurisé.
Réservez une démonstrationMatias Madou est expert en sécurité, chercheur, directeur technique et cofondateur de Secure Code Warrior. Matias a obtenu son doctorat en sécurité des applications à l'université de Gand, en se concentrant sur les solutions d'analyse statique. Il a ensuite rejoint Fortify aux États-Unis, où il s'est rendu compte qu'il ne suffisait pas de détecter les problèmes de code sans aider les développeurs à écrire du code sécurisé. C'est ce qui l'a incité à développer des produits qui aident les développeurs, allègent le fardeau de la sécurité et dépassent les attentes des clients. Lorsqu'il n'est pas à son bureau en tant que membre de l'équipe Awesome, il aime être sur scène pour présenter des conférences, notamment RSA Conference, BlackHat et DefCon.
Matias est un chercheur et un développeur qui possède plus de 15 ans d'expérience pratique dans le domaine de la sécurité des logiciels. Il a développé des solutions pour des entreprises telles que Fortify Software et sa propre entreprise Sensei Security. Au cours de sa carrière, Matias a dirigé de nombreux projets de recherche sur la sécurité des applications qui ont débouché sur des produits commerciaux et peut se targuer d'avoir déposé plus de 10 brevets. Lorsqu'il n'est pas à son bureau, Matias a été instructeur pour des formations avancées en matière de sécurité des applications ( courses ) et intervient régulièrement lors de conférences mondiales telles que RSA Conference, Black Hat, DefCon, BSIMM, OWASP AppSec et BruCon.
Matias est titulaire d'un doctorat en ingénierie informatique de l'Université de Gand, où il a étudié la sécurité des applications par le biais de l'obscurcissement des programmes afin de dissimuler le fonctionnement interne d'une application.


Il est temps de lire le prochain épisode de notre série Infrastructure as Code, les blogs qui amèneront les développeurs comme vous à un tout nouveau niveau de sensibilisation à la sécurité lors du déploiement d'une infrastructure sécurisée au sein de votre propre organisation.
Au fait, comment avez-vous relevé le défi de la mauvaise configuration de la sécurité dans le blog précédent ? Si vous souhaitez vous attaquer dès maintenant à une vulnérabilité de contrôle d'accès fonctionnel manquante, rendez-vous sur la plateforme :
(Le lien ci-dessus vous mènera au défi Kubernetes, mais une fois sur la plateforme, utilisez le menu déroulant pour choisir entre Ansible, CloudFormation, Terraform ou Docker. À vous de choisir).
Presque toutes les applications déployées aujourd'hui disposent d'un mécanisme de contrôle d'accès qui vérifie si l'utilisateur a le droit d'exécuter les fonctions demandées. C'est la pierre angulaire d'une bonne sécurité et d'une bonne fonctionnalité lors de la création d'une application. En fait, toutes les applications web ont besoin de contrôles d'accès afin de permettre à des utilisateurs ayant des privilèges différents d'utiliser le programme.
Des problèmes peuvent toutefois survenir lorsque ces mêmes fonctions de vérification du contrôle d'accès ne sont pas exécutées au niveau de l'infrastructure ou sont mal configurées. Si le contrôle d'accès au niveau de l'infrastructure n'est pas parfaitement en ordre, toute l'entreprise est ouverte aux pirates informatiques, qui peuvent utiliser cette vulnérabilité comme porte d'entrée pour un espionnage non autorisé ou une attaque complète.
En fait, il est extrêmement facile d'exploiter les vulnérabilités du contrôle d'accès aux fonctions manquantes ou mal configurées. Les attaquants n'ont même pas besoin d'être très habiles. Il leur suffit de savoir quelles commandes exécutent les fonctions dans le cadre de l'application, quel qu'il soit. S'ils le font, c'est juste une question d'essais et d'erreurs. Ils peuvent continuellement soumettre des requêtes qui ne devraient pas être autorisées, et dès que l'une d'entre elles réussit, le site web, l'application, le serveur ou même l'ensemble du réseau ciblé peut être exposé.
Comment fonctionnent les exploits de contrôle d'accès aux fonctions manquantes ?
Les contrôles d'accès au niveau des fonctions peuvent s'infiltrer dans une organisation de plusieurs manières. Par exemple, l'accès au niveau de la fonction peut être laissé à une application et ne pas être vérifié par l'infrastructure sous-jacente. Le contrôle d'accès au niveau de l'infrastructure peut également être mal configuré. Dans certains cas, les administrateurs supposent que les utilisateurs non autorisés ne sauront pas comment accéder aux ressources de l'infrastructure que seuls les utilisateurs de niveau supérieur devraient pouvoir voir et utilisent un modèle de "sécurité par l'obscurité" qui fonctionne rarement.
Pour un exemple de sécurité par l'obscurité, l'URL suivante est probablement vulnérable à une attaque :
http://companywebsite.com/app/NormalUserHomepage
Si un utilisateur authentifié utilise une technique appelée "Forced URL Browsing", il peut essayer d'atteindre une page qui n'est affichée qu'aux administrateurs. Voici un exemple :
http://companywebsite.com/app/AdminPages
S'il n'existe pas de vérification côté serveur, l'attaquant se verra simplement présenter la page d'administration (si son nom correspond à la demande) et aura alors accès à toutes les fonctions supplémentaires que les administrateurs exécutent à partir de la nouvelle page. Si le serveur renvoie une erreur "page non trouvée" à l'attaquant, celui-ci peut simplement continuer à essayer jusqu'à ce qu'il trouve le nom de la page d'administration.
Pour les attaquants, l'exploitation des contrôles d'accès manquants au niveau des fonctions est un processus similaire. Au lieu d'essayer de parcourir des pages non autorisées, ils envoient des demandes de fonctions. Par exemple, ils peuvent essayer de créer un nouvel utilisateur avec des droits d'administrateur. Leur demande ressemblerait donc à quelque chose comme ceci, selon le cadre de travail :
POST/action/createuser name=hacker&pw=password&role=admin
S'il n'existe pas de contrôle d'accès au niveau de la fonction, l'exemple ci-dessus aboutirait et un nouveau compte d'administrateur serait créé. Une fois que l'attaquant s'est reconnecté en tant que nouvel administrateur, il dispose des mêmes accès et autorisations que n'importe quel autre administrateur sur ce réseau ou ce serveur.
La solution aux contrôles d'accès manquants au niveau des fonctions
Parce qu'il est si facile pour les attaquants d'exploiter les vulnérabilités du contrôle d'accès au niveau des fonctions manquantes, il est essentiel qu'elles soient trouvées, corrigées et évitées. Heureusement, cela n'est pas trop difficile avec un peu de savoir-faire et une formation de base à la sécurité de l'Infrastructure as Code.
La principale protection viendra de la mise en œuvre d'une autorisation basée sur les rôles au niveau de l'infrastructure. Ne confiez jamais cette fonction aux applications. Même si elles le font, une autorisation au niveau de l'infrastructure permettra de s'assurer que rien n'a été oublié. Idéalement, l'autorisation devrait provenir d'un emplacement centralisé (par exemple, AWS IAM, Azure IAM, etc.) qui est intégré dans la routine de votre organisation et appliqué à chaque nouvelle application. Ces processus d'autorisation peuvent provenir du framework lui-même ou d'un certain nombre de modules externes faciles à utiliser.
Enfin, votre organisation devrait adopter le concept du moindre privilège. Toutes les actions et fonctions doivent être refusées par défaut, le processus d'autorisation étant utilisé pour donner aux utilisateurs valides la permission de faire ce dont ils ont besoin. Ils ne doivent recevoir que les autorisations nécessaires à l'exécution de la fonction requise, et uniquement pour la durée nécessaire.
L'absence de contrôles d'accès au niveau de la fonction peut être dévastatrice. Heureusement, en intégrant de bonnes pratiques d'autorisation au niveau de l'infrastructure dans votre organisation, vous pouvez facilement empêcher ce problème de se produire.
Vous pensez être prêt à repérer un bogue de contrôle d'accès dans la nature ? Comparez ces extraits de code Docker, l'un vulnérable, l'autre sécurisé :
Vulnérable :
FROM quay.io/prometheus/busybox:latest
ARG VERSION=0.12.1
ARG FILENAME=mysqld_exporter-${VERSION}.linux-amd64
ARG URL=https://github.com/prometheus/mysqld_exporter/releases/download/v
RUN wget $URL$VERSION/$FILENAME.tar.gz && \
tar -xvf $FILENAME.tar.gz && \
mv $FILENAME/mysqld_exporter /bin/mysqld_exporter
COPY .my.cnf /home/.my.cnf
COPY ./scripts/entrypoint.sh ~/entrypoint.sh
USER root
EXPOSE 9104
ENTRYPOINT [ "sh", "~/entrypoint.sh" ]
CMD [ "/bin/mysqld_exporter" ]
Sécurisé :
FROM quay.io/prometheus/busybox:latest
ARG VERSION=0.12.1
ARG FILENAME=mysqld_exporter-${VERSION}.linux-amd64
ARG URL=https://github.com/prometheus/mysqld_exporter/releases/download/v
RUN wget $URL$VERSION/$FILENAME.tar.gz && \
tar -xvf $FILENAME.tar.gz && \
mv $FILENAME/mysqld_exporter /bin/mysqld_exporter
COPY .my.cnf /home/.my.cnf
COPY ./scripts/entrypoint.sh ~/entrypoint.sh
USER nobody
EXPOSE 9104
ENTRYPOINT [ "sh", "~/entrypoint.sh" ]
CMD [ "/bin/mysqld_exporter" ]
Apprenez-en plus, lancez-vous des défis
Consultez les pages du Secure Code Warrior pour en savoir plus sur cette vulnérabilité et sur la manière de protéger votre organisation et vos clients contre les ravages causés par d'autres failles de sécurité et vulnérabilités.
Et si vous l'avez manqué plus tôt, vous pouvez essayer un défi de sécurité gamifié de l'IaC sur la plateforme Secure Code Warrior pour garder toutes vos compétences en cybersécurité aiguisées et à jour.
Restez à l'écoute pour le prochain chapitre !

Il est temps de lire le prochain épisode de notre série Infrastructure as Code, les blogs qui amèneront les développeurs comme vous à un tout nouveau niveau de sensibilisation à la sécurité lors du déploiement d'une infrastructure sécurisée au sein de votre propre organisation.
Au fait, comment avez-vous relevé le défi de la mauvaise configuration de la sécurité dans le blog précédent ? Si vous souhaitez vous attaquer dès maintenant à une vulnérabilité de contrôle d'accès fonctionnel manquante, rendez-vous sur la plateforme :
(Le lien ci-dessus vous mènera au défi Kubernetes, mais une fois sur la plateforme, utilisez le menu déroulant pour choisir entre Ansible, CloudFormation, Terraform ou Docker. À vous de choisir).
Presque toutes les applications déployées aujourd'hui disposent d'un mécanisme de contrôle d'accès qui vérifie si l'utilisateur a le droit d'exécuter les fonctions demandées. C'est la pierre angulaire d'une bonne sécurité et d'une bonne fonctionnalité lors de la création d'une application. En fait, toutes les applications web ont besoin de contrôles d'accès afin de permettre à des utilisateurs ayant des privilèges différents d'utiliser le programme.
Des problèmes peuvent toutefois survenir lorsque ces mêmes fonctions de vérification du contrôle d'accès ne sont pas exécutées au niveau de l'infrastructure ou sont mal configurées. Si le contrôle d'accès au niveau de l'infrastructure n'est pas parfaitement en ordre, toute l'entreprise est ouverte aux pirates informatiques, qui peuvent utiliser cette vulnérabilité comme porte d'entrée pour un espionnage non autorisé ou une attaque complète.
En fait, il est extrêmement facile d'exploiter les vulnérabilités du contrôle d'accès aux fonctions manquantes ou mal configurées. Les attaquants n'ont même pas besoin d'être très habiles. Il leur suffit de savoir quelles commandes exécutent les fonctions dans le cadre de l'application, quel qu'il soit. S'ils le font, c'est juste une question d'essais et d'erreurs. Ils peuvent continuellement soumettre des requêtes qui ne devraient pas être autorisées, et dès que l'une d'entre elles réussit, le site web, l'application, le serveur ou même l'ensemble du réseau ciblé peut être exposé.
Comment fonctionnent les exploits de contrôle d'accès aux fonctions manquantes ?
Les contrôles d'accès au niveau des fonctions peuvent s'infiltrer dans une organisation de plusieurs manières. Par exemple, l'accès au niveau de la fonction peut être laissé à une application et ne pas être vérifié par l'infrastructure sous-jacente. Le contrôle d'accès au niveau de l'infrastructure peut également être mal configuré. Dans certains cas, les administrateurs supposent que les utilisateurs non autorisés ne sauront pas comment accéder aux ressources de l'infrastructure que seuls les utilisateurs de niveau supérieur devraient pouvoir voir et utilisent un modèle de "sécurité par l'obscurité" qui fonctionne rarement.
Pour un exemple de sécurité par l'obscurité, l'URL suivante est probablement vulnérable à une attaque :
http://companywebsite.com/app/NormalUserHomepage
Si un utilisateur authentifié utilise une technique appelée "Forced URL Browsing", il peut essayer d'atteindre une page qui n'est affichée qu'aux administrateurs. Voici un exemple :
http://companywebsite.com/app/AdminPages
S'il n'existe pas de vérification côté serveur, l'attaquant se verra simplement présenter la page d'administration (si son nom correspond à la demande) et aura alors accès à toutes les fonctions supplémentaires que les administrateurs exécutent à partir de la nouvelle page. Si le serveur renvoie une erreur "page non trouvée" à l'attaquant, celui-ci peut simplement continuer à essayer jusqu'à ce qu'il trouve le nom de la page d'administration.
Pour les attaquants, l'exploitation des contrôles d'accès manquants au niveau des fonctions est un processus similaire. Au lieu d'essayer de parcourir des pages non autorisées, ils envoient des demandes de fonctions. Par exemple, ils peuvent essayer de créer un nouvel utilisateur avec des droits d'administrateur. Leur demande ressemblerait donc à quelque chose comme ceci, selon le cadre de travail :
POST/action/createuser name=hacker&pw=password&role=admin
S'il n'existe pas de contrôle d'accès au niveau de la fonction, l'exemple ci-dessus aboutirait et un nouveau compte d'administrateur serait créé. Une fois que l'attaquant s'est reconnecté en tant que nouvel administrateur, il dispose des mêmes accès et autorisations que n'importe quel autre administrateur sur ce réseau ou ce serveur.
La solution aux contrôles d'accès manquants au niveau des fonctions
Parce qu'il est si facile pour les attaquants d'exploiter les vulnérabilités du contrôle d'accès au niveau des fonctions manquantes, il est essentiel qu'elles soient trouvées, corrigées et évitées. Heureusement, cela n'est pas trop difficile avec un peu de savoir-faire et une formation de base à la sécurité de l'Infrastructure as Code.
La principale protection viendra de la mise en œuvre d'une autorisation basée sur les rôles au niveau de l'infrastructure. Ne confiez jamais cette fonction aux applications. Même si elles le font, une autorisation au niveau de l'infrastructure permettra de s'assurer que rien n'a été oublié. Idéalement, l'autorisation devrait provenir d'un emplacement centralisé (par exemple, AWS IAM, Azure IAM, etc.) qui est intégré dans la routine de votre organisation et appliqué à chaque nouvelle application. Ces processus d'autorisation peuvent provenir du framework lui-même ou d'un certain nombre de modules externes faciles à utiliser.
Enfin, votre organisation devrait adopter le concept du moindre privilège. Toutes les actions et fonctions doivent être refusées par défaut, le processus d'autorisation étant utilisé pour donner aux utilisateurs valides la permission de faire ce dont ils ont besoin. Ils ne doivent recevoir que les autorisations nécessaires à l'exécution de la fonction requise, et uniquement pour la durée nécessaire.
L'absence de contrôles d'accès au niveau de la fonction peut être dévastatrice. Heureusement, en intégrant de bonnes pratiques d'autorisation au niveau de l'infrastructure dans votre organisation, vous pouvez facilement empêcher ce problème de se produire.
Vous pensez être prêt à repérer un bogue de contrôle d'accès dans la nature ? Comparez ces extraits de code Docker, l'un vulnérable, l'autre sécurisé :
Vulnérable :
FROM quay.io/prometheus/busybox:latest
ARG VERSION=0.12.1
ARG FILENAME=mysqld_exporter-${VERSION}.linux-amd64
ARG URL=https://github.com/prometheus/mysqld_exporter/releases/download/v
RUN wget $URL$VERSION/$FILENAME.tar.gz && \
tar -xvf $FILENAME.tar.gz && \
mv $FILENAME/mysqld_exporter /bin/mysqld_exporter
COPY .my.cnf /home/.my.cnf
COPY ./scripts/entrypoint.sh ~/entrypoint.sh
USER root
EXPOSE 9104
ENTRYPOINT [ "sh", "~/entrypoint.sh" ]
CMD [ "/bin/mysqld_exporter" ]
Sécurisé :
FROM quay.io/prometheus/busybox:latest
ARG VERSION=0.12.1
ARG FILENAME=mysqld_exporter-${VERSION}.linux-amd64
ARG URL=https://github.com/prometheus/mysqld_exporter/releases/download/v
RUN wget $URL$VERSION/$FILENAME.tar.gz && \
tar -xvf $FILENAME.tar.gz && \
mv $FILENAME/mysqld_exporter /bin/mysqld_exporter
COPY .my.cnf /home/.my.cnf
COPY ./scripts/entrypoint.sh ~/entrypoint.sh
USER nobody
EXPOSE 9104
ENTRYPOINT [ "sh", "~/entrypoint.sh" ]
CMD [ "/bin/mysqld_exporter" ]
Apprenez-en plus, lancez-vous des défis
Consultez les pages du Secure Code Warrior pour en savoir plus sur cette vulnérabilité et sur la manière de protéger votre organisation et vos clients contre les ravages causés par d'autres failles de sécurité et vulnérabilités.
Et si vous l'avez manqué plus tôt, vous pouvez essayer un défi de sécurité gamifié de l'IaC sur la plateforme Secure Code Warrior pour garder toutes vos compétences en cybersécurité aiguisées et à jour.
Restez à l'écoute pour le prochain chapitre !

Cliquez sur le lien ci-dessous et téléchargez le PDF de cette ressource.
Secure Code Warrior est là pour vous aider à sécuriser le code tout au long du cycle de vie du développement logiciel et à créer une culture dans laquelle la cybersécurité est une priorité. Que vous soyez responsable AppSec, développeur, CISO ou toute autre personne impliquée dans la sécurité, nous pouvons aider votre organisation à réduire les risques associés à un code non sécurisé.
Voir le rapportRéservez une démonstrationMatias Madou est expert en sécurité, chercheur, directeur technique et cofondateur de Secure Code Warrior. Matias a obtenu son doctorat en sécurité des applications à l'université de Gand, en se concentrant sur les solutions d'analyse statique. Il a ensuite rejoint Fortify aux États-Unis, où il s'est rendu compte qu'il ne suffisait pas de détecter les problèmes de code sans aider les développeurs à écrire du code sécurisé. C'est ce qui l'a incité à développer des produits qui aident les développeurs, allègent le fardeau de la sécurité et dépassent les attentes des clients. Lorsqu'il n'est pas à son bureau en tant que membre de l'équipe Awesome, il aime être sur scène pour présenter des conférences, notamment RSA Conference, BlackHat et DefCon.
Matias est un chercheur et un développeur qui possède plus de 15 ans d'expérience pratique dans le domaine de la sécurité des logiciels. Il a développé des solutions pour des entreprises telles que Fortify Software et sa propre entreprise Sensei Security. Au cours de sa carrière, Matias a dirigé de nombreux projets de recherche sur la sécurité des applications qui ont débouché sur des produits commerciaux et peut se targuer d'avoir déposé plus de 10 brevets. Lorsqu'il n'est pas à son bureau, Matias a été instructeur pour des formations avancées en matière de sécurité des applications ( courses ) et intervient régulièrement lors de conférences mondiales telles que RSA Conference, Black Hat, DefCon, BSIMM, OWASP AppSec et BruCon.
Matias est titulaire d'un doctorat en ingénierie informatique de l'Université de Gand, où il a étudié la sécurité des applications par le biais de l'obscurcissement des programmes afin de dissimuler le fonctionnement interne d'une application.
Il est temps de lire le prochain épisode de notre série Infrastructure as Code, les blogs qui amèneront les développeurs comme vous à un tout nouveau niveau de sensibilisation à la sécurité lors du déploiement d'une infrastructure sécurisée au sein de votre propre organisation.
Au fait, comment avez-vous relevé le défi de la mauvaise configuration de la sécurité dans le blog précédent ? Si vous souhaitez vous attaquer dès maintenant à une vulnérabilité de contrôle d'accès fonctionnel manquante, rendez-vous sur la plateforme :
(Le lien ci-dessus vous mènera au défi Kubernetes, mais une fois sur la plateforme, utilisez le menu déroulant pour choisir entre Ansible, CloudFormation, Terraform ou Docker. À vous de choisir).
Presque toutes les applications déployées aujourd'hui disposent d'un mécanisme de contrôle d'accès qui vérifie si l'utilisateur a le droit d'exécuter les fonctions demandées. C'est la pierre angulaire d'une bonne sécurité et d'une bonne fonctionnalité lors de la création d'une application. En fait, toutes les applications web ont besoin de contrôles d'accès afin de permettre à des utilisateurs ayant des privilèges différents d'utiliser le programme.
Des problèmes peuvent toutefois survenir lorsque ces mêmes fonctions de vérification du contrôle d'accès ne sont pas exécutées au niveau de l'infrastructure ou sont mal configurées. Si le contrôle d'accès au niveau de l'infrastructure n'est pas parfaitement en ordre, toute l'entreprise est ouverte aux pirates informatiques, qui peuvent utiliser cette vulnérabilité comme porte d'entrée pour un espionnage non autorisé ou une attaque complète.
En fait, il est extrêmement facile d'exploiter les vulnérabilités du contrôle d'accès aux fonctions manquantes ou mal configurées. Les attaquants n'ont même pas besoin d'être très habiles. Il leur suffit de savoir quelles commandes exécutent les fonctions dans le cadre de l'application, quel qu'il soit. S'ils le font, c'est juste une question d'essais et d'erreurs. Ils peuvent continuellement soumettre des requêtes qui ne devraient pas être autorisées, et dès que l'une d'entre elles réussit, le site web, l'application, le serveur ou même l'ensemble du réseau ciblé peut être exposé.
Comment fonctionnent les exploits de contrôle d'accès aux fonctions manquantes ?
Les contrôles d'accès au niveau des fonctions peuvent s'infiltrer dans une organisation de plusieurs manières. Par exemple, l'accès au niveau de la fonction peut être laissé à une application et ne pas être vérifié par l'infrastructure sous-jacente. Le contrôle d'accès au niveau de l'infrastructure peut également être mal configuré. Dans certains cas, les administrateurs supposent que les utilisateurs non autorisés ne sauront pas comment accéder aux ressources de l'infrastructure que seuls les utilisateurs de niveau supérieur devraient pouvoir voir et utilisent un modèle de "sécurité par l'obscurité" qui fonctionne rarement.
Pour un exemple de sécurité par l'obscurité, l'URL suivante est probablement vulnérable à une attaque :
http://companywebsite.com/app/NormalUserHomepage
Si un utilisateur authentifié utilise une technique appelée "Forced URL Browsing", il peut essayer d'atteindre une page qui n'est affichée qu'aux administrateurs. Voici un exemple :
http://companywebsite.com/app/AdminPages
S'il n'existe pas de vérification côté serveur, l'attaquant se verra simplement présenter la page d'administration (si son nom correspond à la demande) et aura alors accès à toutes les fonctions supplémentaires que les administrateurs exécutent à partir de la nouvelle page. Si le serveur renvoie une erreur "page non trouvée" à l'attaquant, celui-ci peut simplement continuer à essayer jusqu'à ce qu'il trouve le nom de la page d'administration.
Pour les attaquants, l'exploitation des contrôles d'accès manquants au niveau des fonctions est un processus similaire. Au lieu d'essayer de parcourir des pages non autorisées, ils envoient des demandes de fonctions. Par exemple, ils peuvent essayer de créer un nouvel utilisateur avec des droits d'administrateur. Leur demande ressemblerait donc à quelque chose comme ceci, selon le cadre de travail :
POST/action/createuser name=hacker&pw=password&role=admin
S'il n'existe pas de contrôle d'accès au niveau de la fonction, l'exemple ci-dessus aboutirait et un nouveau compte d'administrateur serait créé. Une fois que l'attaquant s'est reconnecté en tant que nouvel administrateur, il dispose des mêmes accès et autorisations que n'importe quel autre administrateur sur ce réseau ou ce serveur.
La solution aux contrôles d'accès manquants au niveau des fonctions
Parce qu'il est si facile pour les attaquants d'exploiter les vulnérabilités du contrôle d'accès au niveau des fonctions manquantes, il est essentiel qu'elles soient trouvées, corrigées et évitées. Heureusement, cela n'est pas trop difficile avec un peu de savoir-faire et une formation de base à la sécurité de l'Infrastructure as Code.
La principale protection viendra de la mise en œuvre d'une autorisation basée sur les rôles au niveau de l'infrastructure. Ne confiez jamais cette fonction aux applications. Même si elles le font, une autorisation au niveau de l'infrastructure permettra de s'assurer que rien n'a été oublié. Idéalement, l'autorisation devrait provenir d'un emplacement centralisé (par exemple, AWS IAM, Azure IAM, etc.) qui est intégré dans la routine de votre organisation et appliqué à chaque nouvelle application. Ces processus d'autorisation peuvent provenir du framework lui-même ou d'un certain nombre de modules externes faciles à utiliser.
Enfin, votre organisation devrait adopter le concept du moindre privilège. Toutes les actions et fonctions doivent être refusées par défaut, le processus d'autorisation étant utilisé pour donner aux utilisateurs valides la permission de faire ce dont ils ont besoin. Ils ne doivent recevoir que les autorisations nécessaires à l'exécution de la fonction requise, et uniquement pour la durée nécessaire.
L'absence de contrôles d'accès au niveau de la fonction peut être dévastatrice. Heureusement, en intégrant de bonnes pratiques d'autorisation au niveau de l'infrastructure dans votre organisation, vous pouvez facilement empêcher ce problème de se produire.
Vous pensez être prêt à repérer un bogue de contrôle d'accès dans la nature ? Comparez ces extraits de code Docker, l'un vulnérable, l'autre sécurisé :
Vulnérable :
FROM quay.io/prometheus/busybox:latest
ARG VERSION=0.12.1
ARG FILENAME=mysqld_exporter-${VERSION}.linux-amd64
ARG URL=https://github.com/prometheus/mysqld_exporter/releases/download/v
RUN wget $URL$VERSION/$FILENAME.tar.gz && \
tar -xvf $FILENAME.tar.gz && \
mv $FILENAME/mysqld_exporter /bin/mysqld_exporter
COPY .my.cnf /home/.my.cnf
COPY ./scripts/entrypoint.sh ~/entrypoint.sh
USER root
EXPOSE 9104
ENTRYPOINT [ "sh", "~/entrypoint.sh" ]
CMD [ "/bin/mysqld_exporter" ]
Sécurisé :
FROM quay.io/prometheus/busybox:latest
ARG VERSION=0.12.1
ARG FILENAME=mysqld_exporter-${VERSION}.linux-amd64
ARG URL=https://github.com/prometheus/mysqld_exporter/releases/download/v
RUN wget $URL$VERSION/$FILENAME.tar.gz && \
tar -xvf $FILENAME.tar.gz && \
mv $FILENAME/mysqld_exporter /bin/mysqld_exporter
COPY .my.cnf /home/.my.cnf
COPY ./scripts/entrypoint.sh ~/entrypoint.sh
USER nobody
EXPOSE 9104
ENTRYPOINT [ "sh", "~/entrypoint.sh" ]
CMD [ "/bin/mysqld_exporter" ]
Apprenez-en plus, lancez-vous des défis
Consultez les pages du Secure Code Warrior pour en savoir plus sur cette vulnérabilité et sur la manière de protéger votre organisation et vos clients contre les ravages causés par d'autres failles de sécurité et vulnérabilités.
Et si vous l'avez manqué plus tôt, vous pouvez essayer un défi de sécurité gamifié de l'IaC sur la plateforme Secure Code Warrior pour garder toutes vos compétences en cybersécurité aiguisées et à jour.
Restez à l'écoute pour le prochain chapitre !
Table des matières
Matias Madou est expert en sécurité, chercheur, directeur technique et cofondateur de Secure Code Warrior. Matias a obtenu son doctorat en sécurité des applications à l'université de Gand, en se concentrant sur les solutions d'analyse statique. Il a ensuite rejoint Fortify aux États-Unis, où il s'est rendu compte qu'il ne suffisait pas de détecter les problèmes de code sans aider les développeurs à écrire du code sécurisé. C'est ce qui l'a incité à développer des produits qui aident les développeurs, allègent le fardeau de la sécurité et dépassent les attentes des clients. Lorsqu'il n'est pas à son bureau en tant que membre de l'équipe Awesome, il aime être sur scène pour présenter des conférences, notamment RSA Conference, BlackHat et DefCon.

Secure Code Warrior est là pour vous aider à sécuriser le code tout au long du cycle de vie du développement logiciel et à créer une culture dans laquelle la cybersécurité est une priorité. Que vous soyez responsable AppSec, développeur, CISO ou toute autre personne impliquée dans la sécurité, nous pouvons aider votre organisation à réduire les risques associés à un code non sécurisé.
Réservez une démonstrationTéléchargerRessources pour vous aider à démarrer
Sécurité dès la conception : Définir les meilleures pratiques, permettre aux développeurs et évaluer les résultats de la sécurité préventive
Dans ce document de recherche, les cofondateurs de Secure Code Warrior , Pieter Danhieux et Matias Madou, Ph.D., ainsi que des contributeurs experts, Chris Inglis, ancien directeur national américain de la cybernétique (aujourd'hui conseiller stratégique du Paladin Capital Group), et Devin Lynch, directeur principal du Paladin Global Institute, révèleront les principales conclusions de plus de vingt entretiens approfondis avec des responsables de la sécurité des entreprises, y compris des RSSI, un vice-président de la sécurité des applications et des professionnels de la sécurité des logiciels.
Évaluation comparative des compétences en matière de sécurité : Rationalisation de la conception sécurisée dans l'entreprise
Il est notoirement difficile de trouver des données significatives sur le succès des initiatives Secure-by-Design. Les RSSI sont souvent confrontés à des difficultés lorsqu'ils tentent de prouver le retour sur investissement (ROI) et la valeur commerciale des activités du programme de sécurité, tant au niveau des personnes que de l'entreprise. De plus, il est particulièrement difficile pour les entreprises d'obtenir des informations sur la façon dont leurs organisations sont comparées aux normes actuelles du secteur. La stratégie nationale de cybersécurité du président a mis les parties prenantes au défi d'"adopter la sécurité et la résilience dès la conception". Pour que les initiatives de conception sécurisée fonctionnent, il faut non seulement donner aux développeurs les compétences nécessaires pour assurer la sécurité du code, mais aussi garantir aux régulateurs que ces compétences sont en place. Dans cette présentation, nous partageons une myriade de données qualitatives et quantitatives, dérivées de sources primaires multiples, y compris des points de données internes collectés auprès de plus de 250 000 développeurs, des informations sur les clients basées sur des données, et des études publiques. En nous appuyant sur cette agrégation de points de données, nous visons à communiquer une vision de l'état actuel des initiatives Secure-by-Design dans de multiples secteurs verticaux. Le rapport explique en détail pourquoi cet espace est actuellement sous-utilisé, l'impact significatif qu'un programme de perfectionnement réussi peut avoir sur l'atténuation des risques de cybersécurité, et le potentiel d'élimination des catégories de vulnérabilités d'une base de code.
Services professionnels - Accélérer grâce à l'expertise
L'équipe des services de stratégie de programme (PSS) de Secure Code Warriorvous aide à construire, améliorer et optimiser votre programme de codage sécurisé. Que vous partiez de zéro ou que vous affiniez votre approche, nos experts vous fournissent des conseils sur mesure.
Thèmes et contenu de la formation sur le code sécurisé
Notre contenu, à la pointe de l'industrie, évolue constamment pour s'adapter au paysage du développement logiciel en constante évolution, tout en gardant votre rôle à l'esprit. Les sujets abordés vont de l'IA à l'injection XQuery, et sont proposés pour une variété de rôles, des architectes et ingénieurs aux gestionnaires de produits et à l'assurance qualité. Découvrez en avant-première ce que notre catalogue de contenu a à offrir par sujet et par rôle.
Ressources pour vous aider à démarrer
Révélation : Comment l'industrie du cyberespace définit la notion de "Secure by Design" (sécurité dès la conception)
Dans notre dernier livre blanc, nos cofondateurs, Pieter Danhieux et Matias Madou, Ph.D., ont rencontré plus de vingt responsables de la sécurité d'entreprise, notamment des RSSI, des responsables AppSec et des professionnels de la sécurité, afin d'identifier les principales pièces de ce puzzle et de découvrir la réalité qui se cache derrière le mouvement Secure by Design. Il s'agit d'une ambition partagée par les équipes de sécurité, mais il n'y a pas de manuel de jeu commun.
Vibe Coding va-t-il transformer votre base de code en une fête de fraternité ?
Le codage vibratoire est comme une fête de fraternité universitaire, et l'IA est la pièce maîtresse de toutes les festivités, le tonneau. C'est très amusant de se laisser aller, d'être créatif et de voir où votre imagination peut vous mener, mais après quelques barils, boire (ou utiliser l'IA) avec modération est sans aucun doute la solution la plus sûre à long terme.