博客

程序员征服安全:基础设施即代码系列 - 安全配置错误:权限不当

June 8, 2020
Matias Madou 博士

如今的网络安全威胁无处不在且持续不断。情况已变得十分严峻,以至于在程序部署后再去应对这些威胁几乎是不可能的。因此,精明的组织正在拥抱“基础设施即代码”的理念,让开发人员在构建应用程序的同时就参与到安全防护中。本系列旨在帮助您做好安全准备,让您了解作为开发人员可以采取哪些步骤,在组织内开始部署安全的基础设施即代码。

安全配置错误,尤其是权限不当类错误,通常发生在开发人员创建新用户或为应用程序工具授予执行任务的权限时。例如,这可能是为了从数据库收集信息。但如果新用户的权限设置过高,或者未针对当前任务进行默认配置,就可能在代码中引入严重漏洞。

在深入探讨之前,何不现在就测试一下您的技能?尝试查找并修复一些权限不当的漏洞:

做得怎么样?让我们深入了解一下:

为用户或应用程序授予完全权限,或者从不定义新用户应具备的功能及限制行为,这无疑是部署新代码最快的方法。如果一切顺利,应用程序将利用这些权限完成其指定任务。但危险在于,黑客可能会发现这一过程并入侵该用户。即使创建该用户只是为了执行特定应用程序的特定功能,一旦被入侵,攻击者就可能危及其他应用程序、数据甚至整个网络。

安全配置错误是如何被利用的?

为了直观地了解这种危险,让我们看看在 Docker 云环境中如何编写常见任务的代码。假设开发人员正在使用 Prometheus MySQL Exporter 服务从数据库收集信息。实现这一目标最简单的方法是授予导出器访问数据库的权限。代码可能如下所示:

FROM mysql:latest
   COPY ./scripts/create_users.sh /docker-entrypoint-initdb.d/
   USER 999
     CREATE USER exporter@% IDENTIFIED BY $EXPORTER_PASSWORD;
       GRANT ALL ON *.* TO exporter@%;
   GRANT SELECT ON performance_schema.* TO exporter@%;

这当然能让导出器完成任务。然而,由于权限未加定义,导出器实际上拥有了几乎所有操作权限。显然,导出器本身不会超出其编程行为范围。但如果攻击者能够入侵导出器服务会怎样?在这种情况下,由于它被赋予了完全权限,攻击者就可以利用 SQL 服务执行各种未经授权的任务。

保障安全并消除权限不当问题

在这里,我们再次回归“基础设施即代码”的理念。如果您在构建应用程序时就将安全性编入代码,那么在网络安全方面,您的网络将始终处于更稳固的地位。

在上述 Docker 示例中,如果开发人员希望 Prometheus MySQL Exporter 能够查询数据库,他们可以通过定义其允许执行的操作来更安全地实现这一目标。一个很好的例子如下:


FROM mysql:latest
COPY ./scripts/create_users.sh /docker-entrypoint-initdb.d/
USER 999
   CREATE USER exporter@% IDENTIFIED BY $EXPORTER_PASSWORD;
   GRANT PROCESS, REPLICATION CLIENT ON *.* TO exporter@%;
   GRANT SELECT ON performance_schema.* TO exporter@%;

在这种情况下,为 Prometheus MySQL Exporter 服务配置的 MySQL 用户仅对 MySQL 服务拥有受限权限。具体而言,仅允许 PROCESS 和 REPLICATION CLIENT 权限。这将防止恶意用户利用被入侵的 Prometheus MySQL Exporter 服务。

在代码层面限制权限可以确保用户和应用程序仅拥有完成当前任务所需的权限。这对于保护您的网络并拥抱“基础设施即代码”理念大有裨益。

查看 Secure Code Warrior 博客页面,深入了解此漏洞以及如何保护您的组织和客户免受其他安全缺陷的侵害。您还可以 试用我们的展示平台,体验 Secure Code Warrior 培训平台,保持您的网络安全技能精进且与时俱进。

标语

在 AI 驱动的开发成果发布前实现有效治理

评估 AI 辅助风险,在提交代码时强制执行安全编码策略,并加速整个软件开发生命周期的安全交付。

预约演示
资源库

探索更多博客

获取有关安全编码、人工智能治理和软件风险管理的专家内容。

浏览全部
案例研究
筛选标签
这是 div 块中的一段文本。

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.

了解更多
案例研究
筛选标签
这是 div 块中的一段文本。

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

了解更多
案例研究
筛选标签
这是 div 块中的一段文本。

统一的安全文化:Sage 如何打造其安全倡导者项目

了解 Sage 如何通过灵活且以关系为导向的方法提升安全性,成功培养了 200 多名安全倡导者,并实现了显著的风险降低。

了解更多
博客
筛选标签
这是 div 块中的一段文本。

2026年网络安全意识月:理解人工智能安全对企业防御至关重要

目前,大多数顶级人工智能公司已公开呼吁全球放缓人工智能的发展速度,以便安全防护措施能够跟上步伐。然而事实是,严重的安全问题已经显现。随着人工智能实施带来的经济成本和风险不断累积,无数安全领导者和高管团队正处于紧迫的境地。

了解更多
博客
筛选标签
这是 div 块中的一段文本。

赋能要素 8:打造项目品牌

成功的安全编码项目不仅需要优质的内容。赋能要素 8 展示了如何通过品牌化将参与过程转变为一种令人向往、以地位为驱动的体验。

了解更多
博客
筛选标签
这是 div 块中的一段文本。

每一位员工现在都处于 AI 网络安全的最前线

企业技术格局正以一种鲜有人预料到的速度发生剧变,直到为时已晚。我们已正式跨越了从人工编写代码和基础辅助编程,进入“智能体开发生命周期”(ADLC)的时代。虽然自主 AI 智能体有望在多个职能领域实现前所未有的效率,但它们也带来了全新的安全和监管风险。

了解更多

在产品发布前确保 AI 驱动的开发安全

洞察开发风险,执行安全策略,并在整个软件开发生命周期中预防漏洞。

预约演示
未找到相关项目。