课程大纲
A01:2025 – 失效的访问控制
访问控制强制执行策略,确保用户不能超出其预期权限进行操作。失效通常导致未经授权的信息公开、数据修改或破坏,或在用户限制范围外执行业务功能。
实践要点
-
访问控制失效的实际案例
-
安全的访问控制及最佳实践
A02:2025 – 安全配置错误
安全配置错误是指系统、应用程序或云服务在安全视角下设置不当,从而产生漏洞。
实践要点
-
配置错误的真实案例
-
防止配置错误的步骤,包括配置管理和自动化工具
A03:2025 – 软件供应链失败
软件供应链失败是指构建、分发或更新软件过程中出现的故障或其他妥协。这通常由系统依赖的第三方代码、工具或其他组件中的漏洞或恶意更改引起。
A04:2025 – 加密失败
通常来说,所有传输中的数据都应在传输层(OSI 第 4 层)进行加密。过去 CPU 性能和私钥/证书管理的障碍,现在已可通过具有加速加密指令(如 AES 支持)的 CPU 以及简化的私钥和证书管理服务(如 LetsEncrypt.org,主要云厂商还提供更紧密集成的证书管理服务)来解决。
除了保护传输层外,确定哪些数据需要在静态状态下加密,以及哪些数据需要在传输过程中(应用层,OSI 第 7 层)进行额外加密也很重要。
例如,密码、信用卡号、健康记录、个人信息和商业机密需要额外保护,特别是当这些数据受隐私法律(如欧盟《通用数据保护条例》(GDPR))或法规(如 PCI 数据安全标准(PCI DSS))约束时。
实践要点
-
详细分析加密失败,如弱加密算法或不当的密钥管理
-
强加密机制、安全协议(SSL/TLS)的重要性,以及 Web 安全中现代加密的示例
A05:2025 – 注入攻击
注入漏洞是系统缺陷,允许攻击者将恶意代码或命令(如 SQL 或 shell 代码)插入程序输入字段,诱骗系统将其作为系统的一部分执行。这可能导致极其严重的后果。
实践要点
-
详细拆解 SQL、NoSQL、OS 和 LDAP 注入
-
使用预编译语句、参数化查询和输入转义等技术进行缓解
A06:2025 – 不安全的设计
不安全的设计是一个广泛的类别,表示“缺失或无效的控制设计”的不同弱点。
不安全的设计并非所有其他十大风险类别的根源。请注意,不安全的设计和不安全的实现之间存在差异。我们区分设计缺陷和实现缺陷是有原因的,因为它们具有不同的根本原因,发生在开发过程的不同阶段,并且需要不同的修复方法。
安全的设计仍可能存在导致漏洞的实现缺陷,这些漏洞可能被利用。而不安全的设计无法通过完美的实现来修复,因为从未创建过用于防御特定攻击所需的安全控制。
导致不安全设计的因素之一是缺乏对正在开发的软件或系统固有的业务风险建模,从而无法确定所需的安全设计级别。
实践要点
-
我们将探讨可能导致漏洞的设计缺陷,如输入验证不当
-
我们将学习安全架构和安全设计原则
A07:2025 – 认证失败
当攻击者能够诱骗系统将无效或不正确的用户识别为合法用户时,就存在此漏洞。
实践要点
-
常见的认证问题
-
安全的认证策略,如多因素认证和正确的会话处理
A08:2025 – 软件或数据完整性失败
软件和数据完整性失败涉及未能保护代码和基础设施,使其免受无效或不可信代码或数据被当作受信任且有效数据处理的威胁。
一个例子是应用程序依赖来自不可信来源、存储库和内容分发网络(CDN)的插件、库或模块。
不安全的 CI/CD 流水线如果不消费和提供软件完整性检查,可能引入未经授权的访问、不安全或恶意代码或系统被攻破的风险。
另一个例子是 CI/CD 从不可信的地方拉取代码或工件,和/或在使用前未对其进行验证(通过检查签名或类似机制)。
实践要点
-
关注不可信的软件更新和数据篡改等问题
-
安全的更新机制和数据完整性检查
A09:2025 – 安全日志和警报失败
没有日志记录和监控,攻击和泄露就无法被检测到;没有警报,在安全事件期间很难快速有效地响应。
日志记录不足、缺乏持续监控、检测和警报以启动主动响应,这些情况随时可能发生。
实践要点
-
记录安全相关信息和监控可疑活动的重要性
-
用于正确日志记录和实时监控以早期检测泄露的工具和实践
A10:2025 – 异常条件处理不当
软件中异常条件处理不当发生在程序未能防止、检测和应对异常且不可预测的情况时,这会导致崩溃、意外行为,有时甚至是漏洞。
这可能涉及以下三项失败中的一项或多项:
-
应用程序未能防止异常情况发生
-
未能识别正在发生的情况
-
事后对情况的响应不佳或根本没有响应
SAST – 静态应用程序安全测试
-
静态分析是什么,以及在 SDLC 中何时运行它(左移)
-
可通过 SAST 检测的漏洞类型,易受攻击的代码与安全的代码
-
SAST 工具概览(例如 Semgrep、SonarQube、Checkmarx,具体取决于客户的技术栈)
-
实战练习:在包含故意引入漏洞的存储库上运行 SAST 扫描,解释结果,区分误报和真实漏洞
DAST – 动态应用程序安全测试
-
SAST 和 DAST 的区别,对运行中的应用进行黑盒测试
-
DAST 扫描流程,爬取,模糊测试,响应分析
-
DAST 工具概览(例如 OWASP ZAP、Burp Suite)
-
实战练习:在易受攻击的测试应用(例如 OWASP Juice Shop)上运行 DAST 扫描,识别并验证发现
SCA – 软件成分分析
-
第三方依赖项和库的风险,继承的漏洞
-
SBOM,软件物料清单,它是什么以及为什么重要
-
SCA 工具概览(例如 Dependency Check、Snyk、GitHub Dependabot)
-
实战练习:在真实项目上运行 SCA 扫描,识别易受攻击的依赖项并制定修复计划(更新、补丁、缓解)
要求
参与者应具备以下条件:
- 了解软件开发的基本概念
- 理解 Web 应用程序和常见 Web 技术
- 熟悉软件开发生命周期(SDLC)
- 了解源代码和软件依赖关系
- 具备安全概念的基础知识会有所帮助,但非强制要求
目标受众
- 软件开发人员
- 软件工程师
- QA 及软件测试工程师
- DevOps 和 DevSecOps 工程师
- 应用程序安全专业人员
- 安全工程师
- 软件架构师
- 技术负责人
- 从事安全软件开发和应用程序安全测试的专业人员
客户评论 (3)
经验分享,这是教师的诀窍和宝贵之处。
Carey Fan - Logitech
课程 - C/C++ Secure Coding
机器翻译
深入了解产品以及RHDS与开源OpenLDAP之间的一些关键区别。
Jackie Xie - Westpac Banking Corporation
课程 - 389 Directory Server for Administrators
机器翻译
培训师的知识非常丰富,他清楚地知道自己在说什么,并且能够回答我们的问题
Adam - Fireup.PRO
课程 - Advanced Java Security
机器翻译