SCW アイコン
ヒーロー背景(区切りなし)
ブログ

Les codeurs conquièrent l'infrastructure de sécurité en tant que série de codes : contrôle d'accès au niveau des fonctions manquant

マティアス・マドゥ博士
2020年5月11日 発行
最終更新日: 2026年3月8日

C'est l'heure du prochain épisode de notre série Infrastructure as Code, des blogs qui permettront aux développeurs comme vous d'atteindre 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.

Oh, au fait... comment avez-vous relevé le défi posé par les erreurs de configuration de 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 au niveau 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. Votre choix).

Presque toutes les applications déployées aujourd'hui disposent d'un mécanisme de contrôle d'accès qui vérifie si un utilisateur est autorisé à exécuter les fonctions demandées. C'est à peu près la pierre angulaire d'une sécurité et d'une fonctionnalité efficaces 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 aux utilisateurs disposant de privilèges différents d'utiliser le programme.

Des problèmes peuvent toutefois survenir lorsque ces mêmes fonctions de vérification pour le contrôle d'accès ne sont pas exécutées au niveau de l'infrastructure ou sont mal configurées. Sans un contrôle d'accès parfait au niveau de l'infrastructure, toute une entreprise s'ouvre aux pirates informatiques, qui peuvent utiliser cette vulnérabilité comme passerelle pour espionner sans autorisation ou lancer une attaque complète.

En fait, il est extrêmement facile d'exploiter les vulnérabilités de contrôle d'accès aux fonctions manquantes ou mal configurées. Les attaquants n'ont même pas besoin d'être trop doués. Ils ont juste besoin de savoir quelles commandes exécutent des fonctions dans n'importe quel framework supportant l'application. S'ils le font, ce n'est qu'une question d'essais et d'erreurs. Ils peuvent continuellement soumettre des demandes qui ne devraient pas être autorisées, et dès que l'une d'elles aboutit, le site Web, l'application, le serveur ou même l'ensemble du réseau peuvent être exposés.

Comment fonctionnent les exploits de contrôle d'accès au niveau des fonctions manquants ?

Les contrôles d'accès au niveau des fonctions peuvent s'introduire dans une organisation de plusieurs manières. Par exemple, l'accès au niveau des fonctions peut être laissé à une application et ne pas être vérifié par l'infrastructure sous-jacente. Ou bien, le contrôle d'accès au niveau de l'infrastructure peut être mal configuré. Dans certains cas, les administrateurs partent du principe que les utilisateurs non autorisés ne sauront pas comment accéder à des ressources d'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.

À titre d'exemple de sécurité par l'obscurité, l'URL suivante est probablement vulnérable aux attaques :

http://companywebsite.com/app/NormalUserHomepage

Si un utilisateur authentifié utilise une technique appelée navigation URL forcée, il peut essayer d'accéder à une page réservée aux administrateurs. Voici un exemple :

http://companywebsite.com/app/AdminPages

S'il n'existe aucune vérification côté serveur, les pages d'administration leur seront simplement affichées (si leur nom correspond à la demande) et auront ensuite accès à toutes les fonctions supplémentaires que les administrateurs peuvent utiliser à partir de la nouvelle page. Si le serveur renvoie une erreur « page introuvable » à l'attaquant, celui-ci peut simplement continuer à essayer jusqu'à ce qu'il trouve le nom donné à la page d'administration.

Pour les attaquants, exploiter contrôles d'accès au niveau des fonctions manquants est un processus similaire. Au lieu d'essayer de parcourir des pages non autorisées, ils envoient plutôt des demandes de fonction. Par exemple, ils peuvent essayer de créer un nouvel utilisateur avec des droits d'administrateur. Leur demande ressemblerait donc à ceci, selon le framework :

Post/Action/CreateUser Name=hacker&pw=password&role=admin

S'il n'existe aucun contrôle d'accès au niveau des fonctions, l'exemple ci-dessus serait réussi et un nouveau compte administrateur serait créé. Une fois que l'attaquant se reconnectera en tant que nouvel administrateur, il aura le même accès et les mêmes autorisations que tout autre administrateur sur ce réseau ou ce serveur.

Le correctif pour les contrôles d'accès au niveau des fonctions manquants

Comme il est si facile pour les attaquants d'exploiter les vulnérabilités manquantes en matière de contrôle d'accès au niveau des fonctions, il est essentiel de les détecter, de les corriger et de les empêcher. Heureusement, ce n'est pas trop difficile avec un peu de savoir-faire et une infrastructure de base car Formation à la sécurité du code.

La principale protection proviendra de la mise en œuvre de l'autorisation basée sur les rôles au niveau de l'infrastructure. Ne faites jamais confiance aux applications pour gérer cette fonction. Même s'ils le font, le fait de disposer d'une autorisation côté infrastructure garantira que rien n'est oublié. Idéalement, l'autorisation doit provenir d'un emplacement centralisé (par exemple, AWS IAM, Azure IAM, etc.) intégré à 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 doit 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 l'autorisation de faire ce dont ils ont besoin. Les autorisations nécessaires ne devraient leur être accordées que pour exécuter la fonction requise, et uniquement pour la durée requise.

L'absence de contrôles d'accès au niveau des fonctions peut être dévastatrice. Heureusement, en mettant en place de bonnes pratiques d'autorisation au niveau de l'infrastructure au sein de votre organisation, vous pouvez facilement éviter que ce problème ne se produise.

Vous pensez être prêt à détecter 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é :


脆弱な:

DEPUIS quay.io/prometheus/busybox:latest
VERSION ARG = 0.12.1
Nom de fichier ARG = MySQLD_Exporter-$ {VERSION} .linux-amd64
URL ARG = https://github.com/prometheus/mysqld_exporter/releases/download/v
EXÉCUTEZ wget $URL$VERSION/$filename.tar.gz && \
tar -xvf $Filename.tar.gz && \
mv $FileName/MySQLD_Exporter /bin/mysqld_exporter
COPIEZ .my.cnf /home/.my.cnf
COPIE. /scripts/entrypoint.sh ~/entrypoint.sh
Utilisateur root
EXPOSER 9104
POINT D'ENTRÉE [« sh », "~/entrypoint.sh"]
CMD [« /bin/mysqld_exporter »]

安全:

DEPUIS quay.io/prometheus/busybox:latest
VERSION ARG = 0.12.1
Nom de fichier ARG = MySQLD_Exporter-$ {VERSION} .linux-amd64
URL ARG = https://github.com/prometheus/mysqld_exporter/releases/download/v
EXÉCUTEZ wget $URL$VERSION/$filename.tar.gz && \
tar -xvf $Filename.tar.gz && \
mv $FileName/MySQLD_Exporter /bin/mysqld_exporter
COPIEZ .my.cnf /home/.my.cnf
COPIE. /scripts/entrypoint.sh ~/entrypoint.sh
UTILISATEUR : personne
EXPOSER 9104
POINT D'ENTRÉE [« sh », "~/entrypoint.sh"]
CMD [« /bin/mysqld_exporter »]

Apprenez-en plus, lancez-vous des défis

Secure Code Warrior を参照してください Secure Code Warrior のブログページを参照し、この脆弱性について、また他のセキュリティ侵害や脆弱性による被害から組織や顧客を守る方法について詳しく学びましょう。

Et si vous l'avez manqué plus tôt, vous pouvez essayez un défi de sécurité gamifié avec IaC sur la plateforme Secure Code Warrior pour perfectionner et mettre à jour toutes vos compétences en matière de cybersécurité.

Restez à l'affût du prochain chapitre !

リソースを表示する
リソースを表示する

Sans un contrôle d'accès parfaitement ordonné au niveau de l'infrastructure, toute une entreprise s'ouvre aux attaquants, qui peuvent utiliser cette vulnérabilité comme passerelle pour espionner sans autorisation ou lancer une attaque complète.

さらに詳しく知りたいですか?

Matias Madou, Ph.D. セキュリティ専門家、研究者、CTO兼共同設立者(Secure Code Warrior )。Ghent大学でアプリケーションセキュリティの博士号を取得し、静的解析ソリューションに焦点を当てた。その後、米国Fortify社に入社し、開発者が安全なコードを書くことを支援せずに、コードの問題を検出するだけでは不十分であることに気づきました。開発者を支援し、セキュリティの負担を軽減し、お客様の期待を上回る製品を開発することを志すようになった。Team Awesomeの一員としてデスクワークをしていないときは、RSA Conference、BlackHat、DefConなどのカンファレンスでプレゼンテーションをするのが好きである。

もっと詳しく

Secure Code Warrior ソフトウェア開発ライフサイクル全体を通じてコードのセキュリティを確保し、サイバーセキュリティを最優先事項とする文化を構築するために、組織をSecure Code Warrior 。アプリケーションセキュリティ担当者、開発者、情報セキュリティ責任者、その他セキュリティに関わるあらゆる方々のために、当社は組織が非セキュアなコードに関連するリスクを軽減するお手伝いをいたします。

デモを予約する
共有する:
リンクトインのブランドソーシャルx ロゴ
作者
マティアス・マドゥ博士
2020年5月11日発行

Matias Madou, Ph.D. セキュリティ専門家、研究者、CTO兼共同設立者(Secure Code Warrior )。Ghent大学でアプリケーションセキュリティの博士号を取得し、静的解析ソリューションに焦点を当てた。その後、米国Fortify社に入社し、開発者が安全なコードを書くことを支援せずに、コードの問題を検出するだけでは不十分であることに気づきました。開発者を支援し、セキュリティの負担を軽減し、お客様の期待を上回る製品を開発することを志すようになった。Team Awesomeの一員としてデスクワークをしていないときは、RSA Conference、BlackHat、DefConなどのカンファレンスでプレゼンテーションをするのが好きである。

マティアスは、15年以上のソフトウェアセキュリティの実務経験を持つ研究者・開発者です。フォーティファイ・ソフトウェア社や自身の会社(Sensei Security)などでソリューションを開発してきました。キャリアの中で、Matiasは、商用製品につながる複数のアプリケーションセキュリティ研究プロジェクトを主導し、10件以上の特許を取得しています。また、RSAカンファレンス、Black Hat、DefCon、BSIMM、OWASP AppSec、BruConなどの世界的なカンファレンスで定期的に講演を行っているほか、高度なアプリケーションセキュリティトレーニング(courses )の講師も務めています。

Matiasはゲント大学でコンピュータ工学の博士号を取得し、アプリケーションの内部構造を隠すためのプログラム難読化によるアプリケーションセキュリティを研究しました。

共有する:
リンクトインのブランドソーシャルx ロゴ

C'est l'heure du prochain épisode de notre série Infrastructure as Code, des blogs qui permettront aux développeurs comme vous d'atteindre 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.

Oh, au fait... comment avez-vous relevé le défi posé par les erreurs de configuration de 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 au niveau 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. Votre choix).

Presque toutes les applications déployées aujourd'hui disposent d'un mécanisme de contrôle d'accès qui vérifie si un utilisateur est autorisé à exécuter les fonctions demandées. C'est à peu près la pierre angulaire d'une sécurité et d'une fonctionnalité efficaces 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 aux utilisateurs disposant de privilèges différents d'utiliser le programme.

Des problèmes peuvent toutefois survenir lorsque ces mêmes fonctions de vérification pour le contrôle d'accès ne sont pas exécutées au niveau de l'infrastructure ou sont mal configurées. Sans un contrôle d'accès parfait au niveau de l'infrastructure, toute une entreprise s'ouvre aux pirates informatiques, qui peuvent utiliser cette vulnérabilité comme passerelle pour espionner sans autorisation ou lancer une attaque complète.

En fait, il est extrêmement facile d'exploiter les vulnérabilités de contrôle d'accès aux fonctions manquantes ou mal configurées. Les attaquants n'ont même pas besoin d'être trop doués. Ils ont juste besoin de savoir quelles commandes exécutent des fonctions dans n'importe quel framework supportant l'application. S'ils le font, ce n'est qu'une question d'essais et d'erreurs. Ils peuvent continuellement soumettre des demandes qui ne devraient pas être autorisées, et dès que l'une d'elles aboutit, le site Web, l'application, le serveur ou même l'ensemble du réseau peuvent être exposés.

Comment fonctionnent les exploits de contrôle d'accès au niveau des fonctions manquants ?

Les contrôles d'accès au niveau des fonctions peuvent s'introduire dans une organisation de plusieurs manières. Par exemple, l'accès au niveau des fonctions peut être laissé à une application et ne pas être vérifié par l'infrastructure sous-jacente. Ou bien, le contrôle d'accès au niveau de l'infrastructure peut être mal configuré. Dans certains cas, les administrateurs partent du principe que les utilisateurs non autorisés ne sauront pas comment accéder à des ressources d'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.

À titre d'exemple de sécurité par l'obscurité, l'URL suivante est probablement vulnérable aux attaques :

http://companywebsite.com/app/NormalUserHomepage

Si un utilisateur authentifié utilise une technique appelée navigation URL forcée, il peut essayer d'accéder à une page réservée aux administrateurs. Voici un exemple :

http://companywebsite.com/app/AdminPages

S'il n'existe aucune vérification côté serveur, les pages d'administration leur seront simplement affichées (si leur nom correspond à la demande) et auront ensuite accès à toutes les fonctions supplémentaires que les administrateurs peuvent utiliser à partir de la nouvelle page. Si le serveur renvoie une erreur « page introuvable » à l'attaquant, celui-ci peut simplement continuer à essayer jusqu'à ce qu'il trouve le nom donné à la page d'administration.

Pour les attaquants, exploiter contrôles d'accès au niveau des fonctions manquants est un processus similaire. Au lieu d'essayer de parcourir des pages non autorisées, ils envoient plutôt des demandes de fonction. Par exemple, ils peuvent essayer de créer un nouvel utilisateur avec des droits d'administrateur. Leur demande ressemblerait donc à ceci, selon le framework :

Post/Action/CreateUser Name=hacker&pw=password&role=admin

S'il n'existe aucun contrôle d'accès au niveau des fonctions, l'exemple ci-dessus serait réussi et un nouveau compte administrateur serait créé. Une fois que l'attaquant se reconnectera en tant que nouvel administrateur, il aura le même accès et les mêmes autorisations que tout autre administrateur sur ce réseau ou ce serveur.

Le correctif pour les contrôles d'accès au niveau des fonctions manquants

Comme il est si facile pour les attaquants d'exploiter les vulnérabilités manquantes en matière de contrôle d'accès au niveau des fonctions, il est essentiel de les détecter, de les corriger et de les empêcher. Heureusement, ce n'est pas trop difficile avec un peu de savoir-faire et une infrastructure de base car Formation à la sécurité du code.

La principale protection proviendra de la mise en œuvre de l'autorisation basée sur les rôles au niveau de l'infrastructure. Ne faites jamais confiance aux applications pour gérer cette fonction. Même s'ils le font, le fait de disposer d'une autorisation côté infrastructure garantira que rien n'est oublié. Idéalement, l'autorisation doit provenir d'un emplacement centralisé (par exemple, AWS IAM, Azure IAM, etc.) intégré à 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 doit 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 l'autorisation de faire ce dont ils ont besoin. Les autorisations nécessaires ne devraient leur être accordées que pour exécuter la fonction requise, et uniquement pour la durée requise.

L'absence de contrôles d'accès au niveau des fonctions peut être dévastatrice. Heureusement, en mettant en place de bonnes pratiques d'autorisation au niveau de l'infrastructure au sein de votre organisation, vous pouvez facilement éviter que ce problème ne se produise.

Vous pensez être prêt à détecter 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é :


脆弱な:

DEPUIS quay.io/prometheus/busybox:latest
VERSION ARG = 0.12.1
Nom de fichier ARG = MySQLD_Exporter-$ {VERSION} .linux-amd64
URL ARG = https://github.com/prometheus/mysqld_exporter/releases/download/v
EXÉCUTEZ wget $URL$VERSION/$filename.tar.gz && \
tar -xvf $Filename.tar.gz && \
mv $FileName/MySQLD_Exporter /bin/mysqld_exporter
COPIEZ .my.cnf /home/.my.cnf
COPIE. /scripts/entrypoint.sh ~/entrypoint.sh
Utilisateur root
EXPOSER 9104
POINT D'ENTRÉE [« sh », "~/entrypoint.sh"]
CMD [« /bin/mysqld_exporter »]

安全:

DEPUIS quay.io/prometheus/busybox:latest
VERSION ARG = 0.12.1
Nom de fichier ARG = MySQLD_Exporter-$ {VERSION} .linux-amd64
URL ARG = https://github.com/prometheus/mysqld_exporter/releases/download/v
EXÉCUTEZ wget $URL$VERSION/$filename.tar.gz && \
tar -xvf $Filename.tar.gz && \
mv $FileName/MySQLD_Exporter /bin/mysqld_exporter
COPIEZ .my.cnf /home/.my.cnf
COPIE. /scripts/entrypoint.sh ~/entrypoint.sh
UTILISATEUR : personne
EXPOSER 9104
POINT D'ENTRÉE [« sh », "~/entrypoint.sh"]
CMD [« /bin/mysqld_exporter »]

Apprenez-en plus, lancez-vous des défis

Secure Code Warrior を参照してください Secure Code Warrior のブログページを参照し、この脆弱性について、また他のセキュリティ侵害や脆弱性による被害から組織や顧客を守る方法について詳しく学びましょう。

Et si vous l'avez manqué plus tôt, vous pouvez essayez un défi de sécurité gamifié avec IaC sur la plateforme Secure Code Warrior pour perfectionner et mettre à jour toutes vos compétences en matière de cybersécurité.

Restez à l'affût du prochain chapitre !

リソースを表示する
リソースを表示する

以下のフォームに記入してレポートをダウンロードしてください

当社製品および/またはセキュアコーディング関連の情報をお送りするにあたり、ご承諾を頂戴できれば幸いです。お客様の個人情報は常に細心の注意をもって取り扱い、マーケティング目的で他社に販売することは一切ございません。

提出する
SCW成功アイコン
SCWエラーアイコン
フォームを送信するには、Analyticsクッキーを有効にしてください。完了後は再度無効化しても構いません。

C'est l'heure du prochain épisode de notre série Infrastructure as Code, des blogs qui permettront aux développeurs comme vous d'atteindre 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.

Oh, au fait... comment avez-vous relevé le défi posé par les erreurs de configuration de 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 au niveau 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. Votre choix).

Presque toutes les applications déployées aujourd'hui disposent d'un mécanisme de contrôle d'accès qui vérifie si un utilisateur est autorisé à exécuter les fonctions demandées. C'est à peu près la pierre angulaire d'une sécurité et d'une fonctionnalité efficaces 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 aux utilisateurs disposant de privilèges différents d'utiliser le programme.

Des problèmes peuvent toutefois survenir lorsque ces mêmes fonctions de vérification pour le contrôle d'accès ne sont pas exécutées au niveau de l'infrastructure ou sont mal configurées. Sans un contrôle d'accès parfait au niveau de l'infrastructure, toute une entreprise s'ouvre aux pirates informatiques, qui peuvent utiliser cette vulnérabilité comme passerelle pour espionner sans autorisation ou lancer une attaque complète.

En fait, il est extrêmement facile d'exploiter les vulnérabilités de contrôle d'accès aux fonctions manquantes ou mal configurées. Les attaquants n'ont même pas besoin d'être trop doués. Ils ont juste besoin de savoir quelles commandes exécutent des fonctions dans n'importe quel framework supportant l'application. S'ils le font, ce n'est qu'une question d'essais et d'erreurs. Ils peuvent continuellement soumettre des demandes qui ne devraient pas être autorisées, et dès que l'une d'elles aboutit, le site Web, l'application, le serveur ou même l'ensemble du réseau peuvent être exposés.

Comment fonctionnent les exploits de contrôle d'accès au niveau des fonctions manquants ?

Les contrôles d'accès au niveau des fonctions peuvent s'introduire dans une organisation de plusieurs manières. Par exemple, l'accès au niveau des fonctions peut être laissé à une application et ne pas être vérifié par l'infrastructure sous-jacente. Ou bien, le contrôle d'accès au niveau de l'infrastructure peut être mal configuré. Dans certains cas, les administrateurs partent du principe que les utilisateurs non autorisés ne sauront pas comment accéder à des ressources d'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.

À titre d'exemple de sécurité par l'obscurité, l'URL suivante est probablement vulnérable aux attaques :

http://companywebsite.com/app/NormalUserHomepage

Si un utilisateur authentifié utilise une technique appelée navigation URL forcée, il peut essayer d'accéder à une page réservée aux administrateurs. Voici un exemple :

http://companywebsite.com/app/AdminPages

S'il n'existe aucune vérification côté serveur, les pages d'administration leur seront simplement affichées (si leur nom correspond à la demande) et auront ensuite accès à toutes les fonctions supplémentaires que les administrateurs peuvent utiliser à partir de la nouvelle page. Si le serveur renvoie une erreur « page introuvable » à l'attaquant, celui-ci peut simplement continuer à essayer jusqu'à ce qu'il trouve le nom donné à la page d'administration.

Pour les attaquants, exploiter contrôles d'accès au niveau des fonctions manquants est un processus similaire. Au lieu d'essayer de parcourir des pages non autorisées, ils envoient plutôt des demandes de fonction. Par exemple, ils peuvent essayer de créer un nouvel utilisateur avec des droits d'administrateur. Leur demande ressemblerait donc à ceci, selon le framework :

Post/Action/CreateUser Name=hacker&pw=password&role=admin

S'il n'existe aucun contrôle d'accès au niveau des fonctions, l'exemple ci-dessus serait réussi et un nouveau compte administrateur serait créé. Une fois que l'attaquant se reconnectera en tant que nouvel administrateur, il aura le même accès et les mêmes autorisations que tout autre administrateur sur ce réseau ou ce serveur.

Le correctif pour les contrôles d'accès au niveau des fonctions manquants

Comme il est si facile pour les attaquants d'exploiter les vulnérabilités manquantes en matière de contrôle d'accès au niveau des fonctions, il est essentiel de les détecter, de les corriger et de les empêcher. Heureusement, ce n'est pas trop difficile avec un peu de savoir-faire et une infrastructure de base car Formation à la sécurité du code.

La principale protection proviendra de la mise en œuvre de l'autorisation basée sur les rôles au niveau de l'infrastructure. Ne faites jamais confiance aux applications pour gérer cette fonction. Même s'ils le font, le fait de disposer d'une autorisation côté infrastructure garantira que rien n'est oublié. Idéalement, l'autorisation doit provenir d'un emplacement centralisé (par exemple, AWS IAM, Azure IAM, etc.) intégré à 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 doit 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 l'autorisation de faire ce dont ils ont besoin. Les autorisations nécessaires ne devraient leur être accordées que pour exécuter la fonction requise, et uniquement pour la durée requise.

L'absence de contrôles d'accès au niveau des fonctions peut être dévastatrice. Heureusement, en mettant en place de bonnes pratiques d'autorisation au niveau de l'infrastructure au sein de votre organisation, vous pouvez facilement éviter que ce problème ne se produise.

Vous pensez être prêt à détecter 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é :


脆弱な:

DEPUIS quay.io/prometheus/busybox:latest
VERSION ARG = 0.12.1
Nom de fichier ARG = MySQLD_Exporter-$ {VERSION} .linux-amd64
URL ARG = https://github.com/prometheus/mysqld_exporter/releases/download/v
EXÉCUTEZ wget $URL$VERSION/$filename.tar.gz && \
tar -xvf $Filename.tar.gz && \
mv $FileName/MySQLD_Exporter /bin/mysqld_exporter
COPIEZ .my.cnf /home/.my.cnf
COPIE. /scripts/entrypoint.sh ~/entrypoint.sh
Utilisateur root
EXPOSER 9104
POINT D'ENTRÉE [« sh », "~/entrypoint.sh"]
CMD [« /bin/mysqld_exporter »]

安全:

DEPUIS quay.io/prometheus/busybox:latest
VERSION ARG = 0.12.1
Nom de fichier ARG = MySQLD_Exporter-$ {VERSION} .linux-amd64
URL ARG = https://github.com/prometheus/mysqld_exporter/releases/download/v
EXÉCUTEZ wget $URL$VERSION/$filename.tar.gz && \
tar -xvf $Filename.tar.gz && \
mv $FileName/MySQLD_Exporter /bin/mysqld_exporter
COPIEZ .my.cnf /home/.my.cnf
COPIE. /scripts/entrypoint.sh ~/entrypoint.sh
UTILISATEUR : personne
EXPOSER 9104
POINT D'ENTRÉE [« sh », "~/entrypoint.sh"]
CMD [« /bin/mysqld_exporter »]

Apprenez-en plus, lancez-vous des défis

Secure Code Warrior を参照してください Secure Code Warrior のブログページを参照し、この脆弱性について、また他のセキュリティ侵害や脆弱性による被害から組織や顧客を守る方法について詳しく学びましょう。

Et si vous l'avez manqué plus tôt, vous pouvez essayez un défi de sécurité gamifié avec IaC sur la plateforme Secure Code Warrior pour perfectionner et mettre à jour toutes vos compétences en matière de cybersécurité.

Restez à l'affût du prochain chapitre !

ウェビナーを表示する
始めましょう
もっと詳しく

以下のリンクをクリックして、このリソースのPDFをダウンロードしてください。

Secure Code Warrior ソフトウェア開発ライフサイクル全体を通じてコードのセキュリティを確保し、サイバーセキュリティを最優先事項とする文化を構築するために、組織をSecure Code Warrior 。アプリケーションセキュリティ担当者、開発者、情報セキュリティ責任者、その他セキュリティに関わるあらゆる方々のために、当社は組織が非セキュアなコードに関連するリスクを軽減するお手伝いをいたします。

レポートを表示するデモを予約する
PDFをダウンロード
リソースを表示する
共有する:
リンクトインのブランドソーシャルx ロゴ
さらに詳しく知りたいですか?

共有する:
リンクトインのブランドソーシャルx ロゴ
作者
マティアス・マドゥ博士
2020年5月11日発行

Matias Madou, Ph.D. セキュリティ専門家、研究者、CTO兼共同設立者(Secure Code Warrior )。Ghent大学でアプリケーションセキュリティの博士号を取得し、静的解析ソリューションに焦点を当てた。その後、米国Fortify社に入社し、開発者が安全なコードを書くことを支援せずに、コードの問題を検出するだけでは不十分であることに気づきました。開発者を支援し、セキュリティの負担を軽減し、お客様の期待を上回る製品を開発することを志すようになった。Team Awesomeの一員としてデスクワークをしていないときは、RSA Conference、BlackHat、DefConなどのカンファレンスでプレゼンテーションをするのが好きである。

マティアスは、15年以上のソフトウェアセキュリティの実務経験を持つ研究者・開発者です。フォーティファイ・ソフトウェア社や自身の会社(Sensei Security)などでソリューションを開発してきました。キャリアの中で、Matiasは、商用製品につながる複数のアプリケーションセキュリティ研究プロジェクトを主導し、10件以上の特許を取得しています。また、RSAカンファレンス、Black Hat、DefCon、BSIMM、OWASP AppSec、BruConなどの世界的なカンファレンスで定期的に講演を行っているほか、高度なアプリケーションセキュリティトレーニング(courses )の講師も務めています。

Matiasはゲント大学でコンピュータ工学の博士号を取得し、アプリケーションの内部構造を隠すためのプログラム難読化によるアプリケーションセキュリティを研究しました。

共有する:
リンクトインのブランドソーシャルx ロゴ

C'est l'heure du prochain épisode de notre série Infrastructure as Code, des blogs qui permettront aux développeurs comme vous d'atteindre 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.

Oh, au fait... comment avez-vous relevé le défi posé par les erreurs de configuration de 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 au niveau 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. Votre choix).

Presque toutes les applications déployées aujourd'hui disposent d'un mécanisme de contrôle d'accès qui vérifie si un utilisateur est autorisé à exécuter les fonctions demandées. C'est à peu près la pierre angulaire d'une sécurité et d'une fonctionnalité efficaces 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 aux utilisateurs disposant de privilèges différents d'utiliser le programme.

Des problèmes peuvent toutefois survenir lorsque ces mêmes fonctions de vérification pour le contrôle d'accès ne sont pas exécutées au niveau de l'infrastructure ou sont mal configurées. Sans un contrôle d'accès parfait au niveau de l'infrastructure, toute une entreprise s'ouvre aux pirates informatiques, qui peuvent utiliser cette vulnérabilité comme passerelle pour espionner sans autorisation ou lancer une attaque complète.

En fait, il est extrêmement facile d'exploiter les vulnérabilités de contrôle d'accès aux fonctions manquantes ou mal configurées. Les attaquants n'ont même pas besoin d'être trop doués. Ils ont juste besoin de savoir quelles commandes exécutent des fonctions dans n'importe quel framework supportant l'application. S'ils le font, ce n'est qu'une question d'essais et d'erreurs. Ils peuvent continuellement soumettre des demandes qui ne devraient pas être autorisées, et dès que l'une d'elles aboutit, le site Web, l'application, le serveur ou même l'ensemble du réseau peuvent être exposés.

Comment fonctionnent les exploits de contrôle d'accès au niveau des fonctions manquants ?

Les contrôles d'accès au niveau des fonctions peuvent s'introduire dans une organisation de plusieurs manières. Par exemple, l'accès au niveau des fonctions peut être laissé à une application et ne pas être vérifié par l'infrastructure sous-jacente. Ou bien, le contrôle d'accès au niveau de l'infrastructure peut être mal configuré. Dans certains cas, les administrateurs partent du principe que les utilisateurs non autorisés ne sauront pas comment accéder à des ressources d'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.

À titre d'exemple de sécurité par l'obscurité, l'URL suivante est probablement vulnérable aux attaques :

http://companywebsite.com/app/NormalUserHomepage

Si un utilisateur authentifié utilise une technique appelée navigation URL forcée, il peut essayer d'accéder à une page réservée aux administrateurs. Voici un exemple :

http://companywebsite.com/app/AdminPages

S'il n'existe aucune vérification côté serveur, les pages d'administration leur seront simplement affichées (si leur nom correspond à la demande) et auront ensuite accès à toutes les fonctions supplémentaires que les administrateurs peuvent utiliser à partir de la nouvelle page. Si le serveur renvoie une erreur « page introuvable » à l'attaquant, celui-ci peut simplement continuer à essayer jusqu'à ce qu'il trouve le nom donné à la page d'administration.

Pour les attaquants, exploiter contrôles d'accès au niveau des fonctions manquants est un processus similaire. Au lieu d'essayer de parcourir des pages non autorisées, ils envoient plutôt des demandes de fonction. Par exemple, ils peuvent essayer de créer un nouvel utilisateur avec des droits d'administrateur. Leur demande ressemblerait donc à ceci, selon le framework :

Post/Action/CreateUser Name=hacker&pw=password&role=admin

S'il n'existe aucun contrôle d'accès au niveau des fonctions, l'exemple ci-dessus serait réussi et un nouveau compte administrateur serait créé. Une fois que l'attaquant se reconnectera en tant que nouvel administrateur, il aura le même accès et les mêmes autorisations que tout autre administrateur sur ce réseau ou ce serveur.

Le correctif pour les contrôles d'accès au niveau des fonctions manquants

Comme il est si facile pour les attaquants d'exploiter les vulnérabilités manquantes en matière de contrôle d'accès au niveau des fonctions, il est essentiel de les détecter, de les corriger et de les empêcher. Heureusement, ce n'est pas trop difficile avec un peu de savoir-faire et une infrastructure de base car Formation à la sécurité du code.

La principale protection proviendra de la mise en œuvre de l'autorisation basée sur les rôles au niveau de l'infrastructure. Ne faites jamais confiance aux applications pour gérer cette fonction. Même s'ils le font, le fait de disposer d'une autorisation côté infrastructure garantira que rien n'est oublié. Idéalement, l'autorisation doit provenir d'un emplacement centralisé (par exemple, AWS IAM, Azure IAM, etc.) intégré à 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 doit 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 l'autorisation de faire ce dont ils ont besoin. Les autorisations nécessaires ne devraient leur être accordées que pour exécuter la fonction requise, et uniquement pour la durée requise.

L'absence de contrôles d'accès au niveau des fonctions peut être dévastatrice. Heureusement, en mettant en place de bonnes pratiques d'autorisation au niveau de l'infrastructure au sein de votre organisation, vous pouvez facilement éviter que ce problème ne se produise.

Vous pensez être prêt à détecter 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é :


脆弱な:

DEPUIS quay.io/prometheus/busybox:latest
VERSION ARG = 0.12.1
Nom de fichier ARG = MySQLD_Exporter-$ {VERSION} .linux-amd64
URL ARG = https://github.com/prometheus/mysqld_exporter/releases/download/v
EXÉCUTEZ wget $URL$VERSION/$filename.tar.gz && \
tar -xvf $Filename.tar.gz && \
mv $FileName/MySQLD_Exporter /bin/mysqld_exporter
COPIEZ .my.cnf /home/.my.cnf
COPIE. /scripts/entrypoint.sh ~/entrypoint.sh
Utilisateur root
EXPOSER 9104
POINT D'ENTRÉE [« sh », "~/entrypoint.sh"]
CMD [« /bin/mysqld_exporter »]

安全:

DEPUIS quay.io/prometheus/busybox:latest
VERSION ARG = 0.12.1
Nom de fichier ARG = MySQLD_Exporter-$ {VERSION} .linux-amd64
URL ARG = https://github.com/prometheus/mysqld_exporter/releases/download/v
EXÉCUTEZ wget $URL$VERSION/$filename.tar.gz && \
tar -xvf $Filename.tar.gz && \
mv $FileName/MySQLD_Exporter /bin/mysqld_exporter
COPIEZ .my.cnf /home/.my.cnf
COPIE. /scripts/entrypoint.sh ~/entrypoint.sh
UTILISATEUR : personne
EXPOSER 9104
POINT D'ENTRÉE [« sh », "~/entrypoint.sh"]
CMD [« /bin/mysqld_exporter »]

Apprenez-en plus, lancez-vous des défis

Secure Code Warrior を参照してください Secure Code Warrior のブログページを参照し、この脆弱性について、また他のセキュリティ侵害や脆弱性による被害から組織や顧客を守る方法について詳しく学びましょう。

Et si vous l'avez manqué plus tôt, vous pouvez essayez un défi de sécurité gamifié avec IaC sur la plateforme Secure Code Warrior pour perfectionner et mettre à jour toutes vos compétences en matière de cybersécurité.

Restez à l'affût du prochain chapitre !

目次

PDFをダウンロード
リソースを表示する
さらに詳しく知りたいですか?

Matias Madou, Ph.D. セキュリティ専門家、研究者、CTO兼共同設立者(Secure Code Warrior )。Ghent大学でアプリケーションセキュリティの博士号を取得し、静的解析ソリューションに焦点を当てた。その後、米国Fortify社に入社し、開発者が安全なコードを書くことを支援せずに、コードの問題を検出するだけでは不十分であることに気づきました。開発者を支援し、セキュリティの負担を軽減し、お客様の期待を上回る製品を開発することを志すようになった。Team Awesomeの一員としてデスクワークをしていないときは、RSA Conference、BlackHat、DefConなどのカンファレンスでプレゼンテーションをするのが好きである。

もっと詳しく

Secure Code Warrior ソフトウェア開発ライフサイクル全体を通じてコードのセキュリティを確保し、サイバーセキュリティを最優先事項とする文化を構築するために、組織をSecure Code Warrior 。アプリケーションセキュリティ担当者、開発者、情報セキュリティ責任者、その他セキュリティに関わるあらゆる方々のために、当社は組織が非セキュアなコードに関連するリスクを軽減するお手伝いをいたします。

デモを予約するダウンロード
共有する:
リンクトインのブランドソーシャルx ロゴ
リソースセンター

はじめの一歩を踏み出すためのリソース

投稿はありません
リソースセンター

はじめの一歩を踏み出すためのリソース

投稿はありません