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

程序员以代码的形式化服装安全基础架构系列:安全配置错误权限不正确

マティアス・マドゥ博士
2020年06月08日 掲載
最終更新日: 2026年3月9日

如今,网络安全威胁无处不在,持续不断。情况变得如此糟糕,以至于在部署程序后试图跟上他们的步伐几乎是不可能的。取而代之的是,精明的组织正在接受基础设施即代码的概念,在这种概念中,开发人员在仍在创建安全的应用程序的同时为制作应用程序做出贡献。本系列旨在让您做好安全准备,这样您就可以了解作为开发人员可以采取的步骤,开始在自己的组织中以代码形式部署安全基础架构。

安全配置错误,尤其是权限不当的配置错误,通常发生在开发人员为完成任务而创建新用户或授予应用程序权限时。例如,可以这样做来从数据库收集信息。但是,如果将新用户的权限设置得过高,或者没有为手头的任务进行默认配置,则可能会在代码中引入严重漏洞。

在我们开始之前,为什么不现在就测试一下你的技能呢?尝试找到并修复一些不当权限漏洞:

你做得怎么样?让我们更深入地挖掘一下:

授予用户或应用程序完全权限,或者干脆不费心去定义新用户应该能够完成什么以及哪些行为受到限制,无疑是获得新代码的最快方法。如果一切顺利,应用程序将利用这些权限来完成其分配的任务。危险在于,黑客会发现这个过程,然后危及该用户。尽管创建用户是为了完成特定应用程序的特定功能,但如果遭到入侵,则可能允许攻击者危及其他应用程序、数据甚至网络。

如何利用安全配置错误?

为了直观地了解危险,让我们来看看在 Docker 云环境中有时是如何编码常见任务的。假设开发人员正在使用 Prometheus MySQL 导出器服务从数据库收集信息。允许这种情况发生的最简单方法是授予导出者访问数据库的权限。所以代码可能像这样:

来自 mysql: 最新
复制。/scripts/create_users.sh /docker-entrypoint-initdb.d/
用户 999
创建由 $EXPORTER_PASSWORD 标识的用户导出器@%;
将 ALL ON *.* 授予出口商@%;
在 performance_schema.* 上向导出者授予选择权@%;

这肯定会使出口商能够完成其任务。但是,由于未定义权限,因此导出器实际上几乎可以做任何事情。显然,出口商本身永远不会在其编程行为之外采取行动。但是,如果攻击者能够破坏导出器服务,会发生什么?在这种情况下,由于获得了完全权限,攻击者可以使用 SQL 服务执行各种未经授权的任务。

保护和消除不当权限

在这里,我们再次谈谈基础设施即代码的概念。如果你在创建应用程序时就将安全性编码到应用程序中,那么在网络安全方面,网络的整体基础总是会好得多。

在上面的 Docker 示例中,如果开发人员希望 Prometheus MySQL 导出器能够查询数据库,他们可以通过定义应该允许它完成的任务来更安全地做到这一点。一个很好的例子是:


来自 mysql: 最新
复制。/scripts/create_users.sh /docker-entrypoint-initdb.d/
用户 999
创建由 $EXPORTER_PASSWORD 标识的用户导出器@%;
授权进程,复制客户端开启*.* 给 exporter@%;
在 performance_schema.* 上向导出者授予选择权@%;

在这种情况下,为 Prometheus MySQL Exporter 服务配置的 MySQL 用户对 MySQL 服务仅具有有限的权限。具体而言,只允许使用 “进程” 和 “复制客户端” 权限。这将防止恶意用户利用受损的 Prometheus MySQL 导出器服务。

在代码级别限制权限可以确保用户和应用程序只有足够的权限来完成手头的任务。这可以大大有助于保护您的网络和采用基础设施即代码的概念。

来看看 安全代码勇士 博客页面,详细了解此漏洞以及如何保护您的组织和客户免受其他安全漏洞的破坏。你也可以 试试我们的展示柜 Secure Code Warrior 培训平台可让您的所有网络安全技能不断磨练并保持最新状态。

リソースを確認する
リソースを確認する

安全配置错误,尤其是权限不当的配置错误,通常发生在开发人员完成任务并创建新用户或本应用程序权限时。

もっと知りたいですか?

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

もっと詳しく

Secure Code Warriorは、ソフトウェア開発ライフサイクル全体を通じてコードを保護し、サイバーセキュリティを最優先とする文化を醸成するお手伝いをします。AppSecマネージャー、開発者、最高情報セキュリティ責任者(CISO)、あるいはセキュリティに関わるあらゆる方々の組織において、不安全なコードに関連するリスクの低減を支援します。

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

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 ロゴ

如今,网络安全威胁无处不在,持续不断。情况变得如此糟糕,以至于在部署程序后试图跟上他们的步伐几乎是不可能的。取而代之的是,精明的组织正在接受基础设施即代码的概念,在这种概念中,开发人员在仍在创建安全的应用程序的同时为制作应用程序做出贡献。本系列旨在让您做好安全准备,这样您就可以了解作为开发人员可以采取的步骤,开始在自己的组织中以代码形式部署安全基础架构。

安全配置错误,尤其是权限不当的配置错误,通常发生在开发人员为完成任务而创建新用户或授予应用程序权限时。例如,可以这样做来从数据库收集信息。但是,如果将新用户的权限设置得过高,或者没有为手头的任务进行默认配置,则可能会在代码中引入严重漏洞。

在我们开始之前,为什么不现在就测试一下你的技能呢?尝试找到并修复一些不当权限漏洞:

你做得怎么样?让我们更深入地挖掘一下:

授予用户或应用程序完全权限,或者干脆不费心去定义新用户应该能够完成什么以及哪些行为受到限制,无疑是获得新代码的最快方法。如果一切顺利,应用程序将利用这些权限来完成其分配的任务。危险在于,黑客会发现这个过程,然后危及该用户。尽管创建用户是为了完成特定应用程序的特定功能,但如果遭到入侵,则可能允许攻击者危及其他应用程序、数据甚至网络。

如何利用安全配置错误?

为了直观地了解危险,让我们来看看在 Docker 云环境中有时是如何编码常见任务的。假设开发人员正在使用 Prometheus MySQL 导出器服务从数据库收集信息。允许这种情况发生的最简单方法是授予导出者访问数据库的权限。所以代码可能像这样:

来自 mysql: 最新
复制。/scripts/create_users.sh /docker-entrypoint-initdb.d/
用户 999
创建由 $EXPORTER_PASSWORD 标识的用户导出器@%;
将 ALL ON *.* 授予出口商@%;
在 performance_schema.* 上向导出者授予选择权@%;

这肯定会使出口商能够完成其任务。但是,由于未定义权限,因此导出器实际上几乎可以做任何事情。显然,出口商本身永远不会在其编程行为之外采取行动。但是,如果攻击者能够破坏导出器服务,会发生什么?在这种情况下,由于获得了完全权限,攻击者可以使用 SQL 服务执行各种未经授权的任务。

保护和消除不当权限

在这里,我们再次谈谈基础设施即代码的概念。如果你在创建应用程序时就将安全性编码到应用程序中,那么在网络安全方面,网络的整体基础总是会好得多。

在上面的 Docker 示例中,如果开发人员希望 Prometheus MySQL 导出器能够查询数据库,他们可以通过定义应该允许它完成的任务来更安全地做到这一点。一个很好的例子是:


来自 mysql: 最新
复制。/scripts/create_users.sh /docker-entrypoint-initdb.d/
用户 999
创建由 $EXPORTER_PASSWORD 标识的用户导出器@%;
授权进程,复制客户端开启*.* 给 exporter@%;
在 performance_schema.* 上向导出者授予选择权@%;

在这种情况下,为 Prometheus MySQL Exporter 服务配置的 MySQL 用户对 MySQL 服务仅具有有限的权限。具体而言,只允许使用 “进程” 和 “复制客户端” 权限。这将防止恶意用户利用受损的 Prometheus MySQL 导出器服务。

在代码级别限制权限可以确保用户和应用程序只有足够的权限来完成手头的任务。这可以大大有助于保护您的网络和采用基础设施即代码的概念。

来看看 安全代码勇士 博客页面,详细了解此漏洞以及如何保护您的组织和客户免受其他安全漏洞的破坏。你也可以 试试我们的展示柜 Secure Code Warrior 培训平台可让您的所有网络安全技能不断磨练并保持最新状态。

リソースを確認する
リソースを確認する

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

当社は、当社の製品および/または関連するセキュリティコードに関する情報を送信するため、お客様の許可を得たいと考えております。お客様の個人情報は常に慎重に取り扱い、マーケティング目的で他社に販売することは決してありません。

提出
SCW成功アイコン
SCWエラーアイコン
フォームを送信するには、「分析」Cookieを有効にしてください。完了後、いつでも再度無効にできます。

如今,网络安全威胁无处不在,持续不断。情况变得如此糟糕,以至于在部署程序后试图跟上他们的步伐几乎是不可能的。取而代之的是,精明的组织正在接受基础设施即代码的概念,在这种概念中,开发人员在仍在创建安全的应用程序的同时为制作应用程序做出贡献。本系列旨在让您做好安全准备,这样您就可以了解作为开发人员可以采取的步骤,开始在自己的组织中以代码形式部署安全基础架构。

安全配置错误,尤其是权限不当的配置错误,通常发生在开发人员为完成任务而创建新用户或授予应用程序权限时。例如,可以这样做来从数据库收集信息。但是,如果将新用户的权限设置得过高,或者没有为手头的任务进行默认配置,则可能会在代码中引入严重漏洞。

在我们开始之前,为什么不现在就测试一下你的技能呢?尝试找到并修复一些不当权限漏洞:

你做得怎么样?让我们更深入地挖掘一下:

授予用户或应用程序完全权限,或者干脆不费心去定义新用户应该能够完成什么以及哪些行为受到限制,无疑是获得新代码的最快方法。如果一切顺利,应用程序将利用这些权限来完成其分配的任务。危险在于,黑客会发现这个过程,然后危及该用户。尽管创建用户是为了完成特定应用程序的特定功能,但如果遭到入侵,则可能允许攻击者危及其他应用程序、数据甚至网络。

如何利用安全配置错误?

为了直观地了解危险,让我们来看看在 Docker 云环境中有时是如何编码常见任务的。假设开发人员正在使用 Prometheus MySQL 导出器服务从数据库收集信息。允许这种情况发生的最简单方法是授予导出者访问数据库的权限。所以代码可能像这样:

来自 mysql: 最新
复制。/scripts/create_users.sh /docker-entrypoint-initdb.d/
用户 999
创建由 $EXPORTER_PASSWORD 标识的用户导出器@%;
将 ALL ON *.* 授予出口商@%;
在 performance_schema.* 上向导出者授予选择权@%;

这肯定会使出口商能够完成其任务。但是,由于未定义权限,因此导出器实际上几乎可以做任何事情。显然,出口商本身永远不会在其编程行为之外采取行动。但是,如果攻击者能够破坏导出器服务,会发生什么?在这种情况下,由于获得了完全权限,攻击者可以使用 SQL 服务执行各种未经授权的任务。

保护和消除不当权限

在这里,我们再次谈谈基础设施即代码的概念。如果你在创建应用程序时就将安全性编码到应用程序中,那么在网络安全方面,网络的整体基础总是会好得多。

在上面的 Docker 示例中,如果开发人员希望 Prometheus MySQL 导出器能够查询数据库,他们可以通过定义应该允许它完成的任务来更安全地做到这一点。一个很好的例子是:


来自 mysql: 最新
复制。/scripts/create_users.sh /docker-entrypoint-initdb.d/
用户 999
创建由 $EXPORTER_PASSWORD 标识的用户导出器@%;
授权进程,复制客户端开启*.* 给 exporter@%;
在 performance_schema.* 上向导出者授予选择权@%;

在这种情况下,为 Prometheus MySQL Exporter 服务配置的 MySQL 用户对 MySQL 服务仅具有有限的权限。具体而言,只允许使用 “进程” 和 “复制客户端” 权限。这将防止恶意用户利用受损的 Prometheus MySQL 导出器服务。

在代码级别限制权限可以确保用户和应用程序只有足够的权限来完成手头的任务。这可以大大有助于保护您的网络和采用基础设施即代码的概念。

来看看 安全代码勇士 博客页面,详细了解此漏洞以及如何保护您的组织和客户免受其他安全漏洞的破坏。你也可以 试试我们的展示柜 Secure Code Warrior 培训平台可让您的所有网络安全技能不断磨练并保持最新状态。

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

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

Secure Code Warriorは、ソフトウェア開発ライフサイクル全体を通じてコードを保護し、サイバーセキュリティを最優先とする文化を醸成するお手伝いをします。AppSecマネージャー、開発者、最高情報セキュリティ責任者(CISO)、あるいはセキュリティに関わるあらゆる方々の組織において、不安全なコードに関連するリスクの低減を支援します。

レポートを確認するデモを予約する
PDFをダウンロード
リソースを確認する
共有する:
リンクトインのブランドソーシャルx ロゴ
もっと知りたいですか?

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

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 ロゴ

如今,网络安全威胁无处不在,持续不断。情况变得如此糟糕,以至于在部署程序后试图跟上他们的步伐几乎是不可能的。取而代之的是,精明的组织正在接受基础设施即代码的概念,在这种概念中,开发人员在仍在创建安全的应用程序的同时为制作应用程序做出贡献。本系列旨在让您做好安全准备,这样您就可以了解作为开发人员可以采取的步骤,开始在自己的组织中以代码形式部署安全基础架构。

安全配置错误,尤其是权限不当的配置错误,通常发生在开发人员为完成任务而创建新用户或授予应用程序权限时。例如,可以这样做来从数据库收集信息。但是,如果将新用户的权限设置得过高,或者没有为手头的任务进行默认配置,则可能会在代码中引入严重漏洞。

在我们开始之前,为什么不现在就测试一下你的技能呢?尝试找到并修复一些不当权限漏洞:

你做得怎么样?让我们更深入地挖掘一下:

授予用户或应用程序完全权限,或者干脆不费心去定义新用户应该能够完成什么以及哪些行为受到限制,无疑是获得新代码的最快方法。如果一切顺利,应用程序将利用这些权限来完成其分配的任务。危险在于,黑客会发现这个过程,然后危及该用户。尽管创建用户是为了完成特定应用程序的特定功能,但如果遭到入侵,则可能允许攻击者危及其他应用程序、数据甚至网络。

如何利用安全配置错误?

为了直观地了解危险,让我们来看看在 Docker 云环境中有时是如何编码常见任务的。假设开发人员正在使用 Prometheus MySQL 导出器服务从数据库收集信息。允许这种情况发生的最简单方法是授予导出者访问数据库的权限。所以代码可能像这样:

来自 mysql: 最新
复制。/scripts/create_users.sh /docker-entrypoint-initdb.d/
用户 999
创建由 $EXPORTER_PASSWORD 标识的用户导出器@%;
将 ALL ON *.* 授予出口商@%;
在 performance_schema.* 上向导出者授予选择权@%;

这肯定会使出口商能够完成其任务。但是,由于未定义权限,因此导出器实际上几乎可以做任何事情。显然,出口商本身永远不会在其编程行为之外采取行动。但是,如果攻击者能够破坏导出器服务,会发生什么?在这种情况下,由于获得了完全权限,攻击者可以使用 SQL 服务执行各种未经授权的任务。

保护和消除不当权限

在这里,我们再次谈谈基础设施即代码的概念。如果你在创建应用程序时就将安全性编码到应用程序中,那么在网络安全方面,网络的整体基础总是会好得多。

在上面的 Docker 示例中,如果开发人员希望 Prometheus MySQL 导出器能够查询数据库,他们可以通过定义应该允许它完成的任务来更安全地做到这一点。一个很好的例子是:


来自 mysql: 最新
复制。/scripts/create_users.sh /docker-entrypoint-initdb.d/
用户 999
创建由 $EXPORTER_PASSWORD 标识的用户导出器@%;
授权进程,复制客户端开启*.* 给 exporter@%;
在 performance_schema.* 上向导出者授予选择权@%;

在这种情况下,为 Prometheus MySQL Exporter 服务配置的 MySQL 用户对 MySQL 服务仅具有有限的权限。具体而言,只允许使用 “进程” 和 “复制客户端” 权限。这将防止恶意用户利用受损的 Prometheus MySQL 导出器服务。

在代码级别限制权限可以确保用户和应用程序只有足够的权限来完成手头的任务。这可以大大有助于保护您的网络和采用基础设施即代码的概念。

来看看 安全代码勇士 博客页面,详细了解此漏洞以及如何保护您的组织和客户免受其他安全漏洞的破坏。你也可以 试试我们的展示柜 Secure Code Warrior 培训平台可让您的所有网络安全技能不断磨练并保持最新状态。

目次

PDFをダウンロード
リソースを確認する
もっと知りたいですか?

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

もっと詳しく

Secure Code Warriorは、ソフトウェア開発ライフサイクル全体を通じてコードを保護し、サイバーセキュリティを最優先とする文化を醸成するお手伝いをします。AppSecマネージャー、開発者、最高情報セキュリティ責任者(CISO)、あるいはセキュリティに関わるあらゆる方々の組織において、不安全なコードに関連するリスクの低減を支援します。

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

入門に役立つリソース

さらに多くの投稿
リソースセンター

入門に役立つリソース

さらに多くの投稿