綜合 SDL 核心培訓通過 Microsoft 安全開發生命週期 (SDL) 深入探討安全軟件設計、開發和測試。該課程提供 SDL 基礎構建的 100 級概述,隨後介紹設計技術,以在開發過程的早期階段檢測和修復缺陷。
在處理開發階段時,課程概述了管理代碼和原生代碼中典型的安全相關編程錯誤。針對討論的漏洞,介紹了攻擊方法及相關的緩解技術,並通過一系列實踐練習為參與者提供即時黑客攻擊的樂趣。在介紹不同的安全測試方法後,演示了各種測試工具的有效性。參與者可以通過一系列實踐練習,將這些工具應用於已討論的易受攻擊的代碼,從而了解這些工具的操作。
參與本課程的學員將
了解安全、IT 安全和安全編碼的基本概念
熟悉 Microsoft 安全開發生命週期的關鍵步驟
學習安全設計和開發實踐
了解安全實施原則
理解安全測試方法
- 獲取有關安全編碼實踐的來源和進一步閱讀資料
目標受眾
開發人員、經理
第一天
- IT安全与安全编码
- 安全的本质
- 与IT安全相关的术语
- 风险的定义
- IT安全的不同方面
- 不同应用领域的需求
- IT安全与安全编码
- 从漏洞到僵尸网络和网络犯罪
- 安全漏洞的本质
- 困难的原因
- 从受感染的计算机到针对性攻击
- 安全漏洞的分类
- Landwehr的分类法
- 七大致命王国
- OWASP 2013年十大漏洞
- OWASP 2003年至2013年十大漏洞比较
- Microsoft®安全开发生命周期(SDL)简介
- 议程
- 应用程序遭受攻击...
- 网络犯罪的演变
- 攻击集中在应用程序上
- 大多数漏洞存在于较小的ISV应用程序中
- Microsoft SDL的起源...
- Microsoft的安全时间线...
- 哪些应用程序需要遵循SDL?
- Microsoft安全开发生命周期(SDL)
- Microsoft安全开发生命周期(SDL)
- SDL前要求:安全培训
- 第一阶段:需求
- 第二阶段:设计
- 第三阶段:实施
- 第四阶段:验证
- 第五阶段:发布 – 响应计划
- 第五阶段:发布 – 最终安全审查
- 第五阶段:发布 – 归档
- SDL后要求:响应
- LOB应用程序的SDL过程指南
- Agile方法论的SDL指南
- 安全软件开发需要过程改进
- 安全设计原则
- 攻击面
- 攻击面减少
- 攻击面 – 一个例子
- 攻击面分析
- 攻击面减少 – 示例
- 隐私
- 隐私
- 理解应用程序行为和关注点
- 深度防御
- SDL核心原则:深度防御
- 深度防御 – 示例
- 最小权限原则
- 最小权限 – 示例
- 安全默认值
- 安全默认值 – 示例
- 攻击面
- 安全实施原则
- 议程
- Microsoft安全开发生命周期(SDL)
- 缓冲区溢出基础
- Intel 80x86处理器 – 主要寄存器
- 内存地址布局
- C/C++在x86上的函数调用机制
- 局部变量和栈帧
- 栈溢出
- 栈上的缓冲区溢出
- 练习 – 介绍
- 练习BOFIntro
- 练习BOFIntro – 确定栈布局
- 练习BOFIntro – 一个简单的漏洞利用
- 输入验证
- 输入验证概念
- 整数问题
- 负整数的表示
- 整数溢出
- 算术溢出 – 猜猜输出!
- 练习IntOverflow
- Math.Abs(int.MinValue)的值是多少?
- 整数问题缓解
- 整数问题缓解
- 避免算术溢出 – 加法
- 避免算术溢出 – 乘法
- 在C#中使用checked关键字检测溢出
- 练习 – 在C#中使用checked关键字
- C#中溢出触发的异常
- 案例研究 – .NET中的整数溢出
- 一个真实的整数溢出漏洞
- 利用整数溢出漏洞
- 路径遍历漏洞
- 路径遍历缓解
第二天
- 安全实施原则
- 注入
- 典型的SQL注入攻击方法
- 盲注和基于时间的SQL注入
- SQL注入保护方法
- 命令注入
- 认证破坏 – 密码管理
- 练习 – 哈希密码的弱点
- 密码管理和存储
- 用于密码存储的专用哈希算法
- 跨站脚本攻击(XSS)
- 跨站脚本攻击(XSS)
- CSS注入
- 利用:通过其他HTML标签注入
- XSS防护
- 缺少功能级访问控制
- 过滤文件上传
- 实用密码学
- 使用对称加密提供机密性
- 对称加密算法
- 分组密码 – 操作模式
- 哈希或消息摘要
- 哈希算法
- 消息认证码(MAC)
- 使用对称密钥提供完整性和真实性
- 使用公钥加密提供机密性
- 经验法则 – 私钥的持有
- 密码管理中的典型错误
- 练习 – 硬编码密码
- 结论
- 注入
- 安全验证原则
- 功能测试与安全测试
- 安全漏洞
- 优先级排序
- SDLC中的安全测试
- 测试计划的步骤(风险分析)
- 范围确定和信息收集
- 利益相关者
- 资产
- 攻击面
- 测试的安全目标
- 威胁建模
- 威胁建模
- 攻击者画像
- 基于攻击树的威胁建模
- 基于滥用/误用案例的威胁建模
- 滥用/误用案例 – 一个简单的网店示例
- MS SDL的STRIDE元素威胁建模方法
- 识别安全目标
- 图表 – DFD元素示例
- 数据流图 – 示例
- 威胁枚举 – MS SDL的STRIDE和DFD元素
- 风险分析 – 威胁分类
- DREAD威胁/风险排名模型
- 安全测试技术和工具
- 一般测试方法
- SDLC各阶段的技术
- 代码审查
- 软件安全的代码审查
- 污点分析
- 启发式方法
- 静态代码分析
- 静态代码分析
- 静态代码分析
- 练习 – 使用静态代码分析工具
- 测试实施
- 手动运行时验证
- 手动与自动化安全测试
- 渗透测试
- 压力测试
- 模糊测试
- 自动化安全测试 – 模糊测试
- 模糊测试的挑战
- Web漏洞扫描器
- 练习 – 使用漏洞扫描器
- 检查与加固环境
- 通用漏洞评分系统 – CVSS
- 漏洞扫描器
- 公共数据库
- 案例研究 – 表单认证绕过
- NULL字节终止漏洞
- 代码中的表单认证绕过漏洞
- 利用表单认证绕过漏洞
- 知识来源
- 安全编码来源 – 入门指南
- 漏洞数据库
- MSDN上的.NET安全编码指南
- .NET安全编码速查表
- 推荐书籍 – .NET和ASP.NET
United Arab Emirates - Microsoft SDL Core
Saudi Arabia - Microsoft SDL Core
South Africa - Microsoft SDL Core
Österreich - Microsoft SDL Core
Deutschland - Microsoft SDL Core
Czech Republic - Microsoft SDL Core
Magyarország - Microsoft SDL Core
Luxembourg - Microsoft SDL Core
Lithuania - Microsoft SDL Core
Nederland - Microsoft SDL Core
Australia - Microsoft SDL Core
New Zealand - Microsoft SDL Core
Philippines - Microsoft SDL Core
Singapore - Microsoft SDL Core
Argentina - Microsoft SDL Core
Costa Rica - Microsoft SDL Core
Guatemala - Microsoft SDL Core
Venezuela - Microsoft SDL Core
United Kingdom - Microsoft SDL Core
South Korea - Microsoft SDL Core
Sri Lanka - Microsoft SDL Core
Indonesia - Microsoft SDL Core