SDL安全开发生命周期框架
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
法
数 据 的
风 险 评
设 计 最
使 类估佳
用型
实
践
高级安全培训内容
高级培训
高级安全 设计和体
系结构
可信用户 界面设计
安全漏洞 细节
实施自定 义威胁缓
解
培训 需求 设计 开发 测试 发布 上线
控制目标 在项目执行之初就要考虑安全问题,确定应用程序安全方面的需求 控制措施 (1)进行需求开发活动时,项目人员应考虑该系统的业务特点,识别系统的安全需求,并文档化形成安全基线 , 通常包括用户操作日志的保存、审计和查询、用户帐户管理、帐户资源配额、消 息内容对管理人员是否可见、帐 号和密码的保存形式(明文或密文)等; (2)建立每个开发阶段的质量门(如必须在check in 代码之前会审并修复所有编译器警告),确定最低BUG标准 (如不允许有SQL注入、XSS 、文件上传 、CSRF 、Open Redirect (url跳转) ); (3)还应进行风险评估,明确针对业务上可能面临的较大的业务安全风险(如资金损失、交易事务一致性被破坏); (4)需求分析或需求规格应和业务代表确认,确保项目组和业务对需求的理解保持一致. 输入 应用程序安全需求表 质量门checklist 风险评估 输出 XX应用程序安全需求表 XX应用系统质量门checklist XX应用系统安全风险列表 相关工具 知识管理系统(Wiki) 工作进度管理系统 Bug跟踪管理系统(bug栏)
培训 需求 设计 开发 测试 发布 上线
控制目标 评估安全设计、威胁模型、攻击面消减是否达到了设计的要求。应用程序经常会严重偏离在软件开发项目要求 和设计阶段所制定的功能和设计规范,因此,在应用程序完成编码后重新进行评估其是非常重要的。 控制措施 (1) 对应用程序进行白盒测试,通过对代码进行静态安全审计,发现系统的安全漏洞和风险; (2) 对应用程序进行黑盒测试, 通过模拟的攻击渗透测试,发现系统的安全漏洞和风险; (3) 录制项目功能流程,遍历项目在威胁模型中涉及到功能或流程,测试其输入输出数据在内存或其它场景下产 生的变化,发现可能存在的安全漏洞; (4)对应用程序进行性能压力测试,通过测试发现系统的性能瓶颈,验证是否达到设计的指标, 发现系统中可能 被恶意用户利用的业务RDS漏洞; 输入 安全测试方案 输出 代码审计报告 渗透测试报告 压力测试报告 安全整改方案 相关工具 代码审计软件 渗透测试软件
❖ strncpy, wcsncpy, _tcsncpy, _mbsncpy, _mbsnbcpy, StrCpyN, StrCpyNA, StrCpyNW, StrNCpy, strcpynA, StrNCpyA, StrNCpyW, lstrcpyn, lstrcpynA, lstrcpynW
❖ strncat, wcsncat, _tcsncat, _mbsncat, _mbsnbcat, StrCatN, StrCatNA, StrCatNW, StrNCat, StrNCatA, StrNCatW, lstrncat, lstrcatnA, lstrcatnW, lstrcatn
危险的API清单
❖ strcpy, strcpyA, strcpyW, wcscpy, _tcscpy, _mbscpy, StrCpy, StrCpyA, StrCpyW, lstrcpy, lstrcpyA, lstrcpyW, _tccpy, _mbccpy
❖ strcat, strcatA, strcatW, wcscat, _tcscat, _mbscat, StrCat, StrCatA, StrCatW, lstrcat, lstrcatA, lstrcatW, StrCatBuff, StrCatBuffA, StrCatBuffW, StrCatChainW, _tccat, _mbccat
培训 需求 设计 开发 测试 发布 上线
控制目标 在项目正式上线前确认各方面安全要求已经满足,并经过正式评审可以发布 控制措施 (1)制定安全应急响应预案,建立应急响应流程/处理列表; (2)对照“系统安全部署方案”对网络拓扑,网络设备,安全设备,操作系统,Web和中间件服务器,数据库, 其它第三方服务应用等进行安全配置,以达到方案中的要求; (3)建立上线审核机制,进行最终安全评审,在软件或项目发布之前根据质量门、设计规范进行评审确定是否正式 发布; 输入 通用应急响应预案 安全配置基线 上线评审制度、流程、质量门要求 输出 应急响应计划 运维规范(包括上线审核制度) 相关工具 安全配置基线
❖ strtok, _tcstok, wcstok, _mbstok ❖ makepath, _tmakepath, _makepath,
_wmakepath, _splitpath, _tsplitpath, _wsplitpath ❖ scanf, wscanf, _tscanf, sscanf, swscanf, _stscanf, snscanf, snwscanf, _sntscanf ❖ _itoa, _itow, _i64toa, _i64tow, _ui64toa, _ui64tot, _ui64tow, _ultoa, _ultot, _ultow ❖ gets, _getts, _gettws ❖ IsBadWritePtr, IsBadHugeWritePtr, IsBadReadPtr, IsBadHugeReadPtr, IsBadCodePtr, IsBadStringPtr ❖ strlen, wcslen, _mbslen, _mbstrlen, StrLen, lstrlen
风险意识。培训对象包括开发人员、测试人员、项目经理、产品经理等。 控制措施 (1)制定强制性的最低的培训周期;设定最低培训门槛(例如:在项目开始之前100%的项目开发员工都必须接受培训); (2)安全不是一成不变的,应对开发人员进行持续不断的培训; (3)培训内容应包括基本安全知识培训(针对开发,测试人员)和高级安全知识培训(针对产品经理,核心开发人员),
较低受攻击面 默认关闭
关闭网络连接 仅侦听TCP流量 鉴别用户访问
强ACLs 普通用户访问 本地子网访问 代码以Network Services、Local Services 或自定义的低权限账户运行 用户可选的配置
.NET代码 未标记有脚本安全的ActiveX控件
SiteLocked ActiveX控件
课程包括安全技术、安全意识及安全规范,形式包括内部培训和外部机构、专家培训(如OWASP安全开发生命周期(SDL) 培训);
(4)培训结束后应进行考核,考核成绩应记入人员绩效考核成绩; 输入 培训教材 培训考卷 输出 培训记录表 考核成绩记录表 审核指标 项目开发人员参与培训率、考试合格率100% (半年内的培训、考核有效)
安全需求
质量门和 BUG栏
安全设计 规范
安全部署 方案
安全风险
攻击面分 析
威胁建模
安全开发 工具
安全开发 规范
安全开发 最佳实践
代码审计 渗透测试 压力测试
安全API
应急方案 应急响应
集成环境 安全加固
安全巡检
运维规范 漏洞扫描
安全监控
培训 需求 设计 开发 测试 发布 上线
控制目标 开发团队的所有成员都必须接受适当的安全培训,了解安全基础知识以及安全和隐私漏洞方面的最新趋势,树立安全
基本安全培训内容
安全设计
业务安全
安全编码
HASP加 /解密算 法安全
隐私保护
减 小 攻 击 面
深 度 防 御
最 小 权 限 原 则
安 全 默 认 设 置
用 户业 登务 陆/ 流 注转 册
交 易 数 据 篡 改
缓 XS 跨 SQ 文
冲 S 站 L 件硬
区漏点注上编
溢洞脚入传码
出
本
加/ 隐
源自文库
隐
解私
私
HA 密 SP 算
❖ CharToOem, CharToOemA, CharToOemW, OemToChar, OemToCharA, OemToCharW, CharToOemBuffA, CharToOemBuffW
❖ alloca, _alloca
❖ wnsprintf, wnsprintfA, wnsprintfW, sprintfW, sprintfA, wsprintf, wsprintfW, wsprintfA, sprintf, swprintf, _stprintf, _snwprintf, _snprintf, _sntprintf, wvsprintf, wvsprintfA, wvsprintfW, vsprintf, _vstprintf, vswprintf, _vsnprintf, _vsnwprintf, _vsntprintf, wvnsprintf, wvnsprintfA, wvnsprintfW
上线评审 checklist
培训 需求 设计 开发 测试 发布 上线
控制目标 确定项目上线后的安全运维,保证系统安全的持续性 控制措施 (1)开展安全监控运维,从各层次监控应用系统安全状况; (2)开展安全巡检运维,定期检查系统各层次(OS、DB、中间件、网络等)安全配置变化情况,并根据安全基线 予以修正; (3)开展安全扫描运维,定期对系统进行OS、应用进行漏洞扫描和渗透测试,发现最新漏洞并予以修正; (4)建立应急事件响应程序,对系统发生的安全事件予以响应处置; 输入 安全巡检手册 安全漏洞管理制度 输出 应急响应流程 安全运维规范(包括扫描、巡检、监控制度) 相关工具 安全配置基线
需求
ASR(受攻击面降低)原则
降低默认执行的代码量 限制可访问到代码的人员范围 限定可访问到代码的人员身份 降低代码所需权限
ASR(受攻击面降低)措施
较高受攻击面 默认执行
打开网络连接 同时侦听UDP和TCP流量
匿名访问 弱ACLs 管理员访问 因特网访问
代码以管理员或root权限运行
统一缺省配置 ActiveX控件 标记有脚本安全的ActiveX控件 非SiteLocked ActiveX控件
信息资产
存在
安全漏洞
利用
安全威胁
造成影响 程度
发生可能性
应对措施 (消减技术)
威胁模型
消减措施
培训 需求 设计 开发 测试 发布 上线
控制目标 确保安全设计规范中描述的安全控制设计、方案及威胁消减原则在开发过程中得以贯彻执行 控制措施 (1)充分了解并建立可靠的安全开发工具库(包括语言、虚拟机、IDE环境、引用的第三方工具包); (2)制定安全开发最佳实践,指导开发人员进行安全编码; (3) 建立安全开发规范; (4) 建立常见安全漏洞、不安全函数、危险的API列表; 输入 安全开发工具清单 安全开发规范 安全开发最佳实践 安全开发培训 输出 安全开发工具库 安全开发培训考卷 常见安全漏洞、不安全函数、危险的API列表(建立工具库不断积累)
SDL安全开发生命周期
安全开发生命周期 (SDL) 是侧重于软件开发的安全保证过程 ,SDL 致力于减少设计,开发中软件 的漏洞数量和严重性问题。通过预防、检测和监控措施相结合的方式,从而降低应用安全开发和维护 的总成本,保证系统的安全性。
培训 需求 设计 开发 测试 发布 上线
安全技术 安全意识 安全规范
应用程序安全需求(基线)
培训 需求 设计 开发 测试 发布 上线
控制目标 将识别出的信息系统安全需求落实到应用技术框架及结构设计中,并形成相关规范
控制措施 (1) 制定安全设计规范,包括通用型安全设计规范和针对特定系统的业务安全设计规范。规范内容通常包括加密 技术的使用、敏感数据文件长期备份以及恢复措施、数据库明文或加密存储等安全级别、评估第三方软件 的许可等; (2)制定安全部署方案,包括网络环境、系统环境、中间件、数据库、安全防护措施、开放端口、第三方接口、软 件版本等内容;; (3)进行ASA(Attack Surface Analysis,受攻击面分析),制定ASR(Attack Surface Reduction,受攻击面降低) 措施 (4)进行威胁分析,建立威胁模型,帮助理解系统中潜在的安全威胁,明确风险并建立相应消减机制; 输入 安全设计规范 安全部署方案(含安全配置基线) 威胁分析模型 输出 XX系统安全设计规范 XX系统安全部署方案(含安全配置基线) XX系统威胁分析模型
数 据 的
风 险 评
设 计 最
使 类估佳
用型
实
践
高级安全培训内容
高级培训
高级安全 设计和体
系结构
可信用户 界面设计
安全漏洞 细节
实施自定 义威胁缓
解
培训 需求 设计 开发 测试 发布 上线
控制目标 在项目执行之初就要考虑安全问题,确定应用程序安全方面的需求 控制措施 (1)进行需求开发活动时,项目人员应考虑该系统的业务特点,识别系统的安全需求,并文档化形成安全基线 , 通常包括用户操作日志的保存、审计和查询、用户帐户管理、帐户资源配额、消 息内容对管理人员是否可见、帐 号和密码的保存形式(明文或密文)等; (2)建立每个开发阶段的质量门(如必须在check in 代码之前会审并修复所有编译器警告),确定最低BUG标准 (如不允许有SQL注入、XSS 、文件上传 、CSRF 、Open Redirect (url跳转) ); (3)还应进行风险评估,明确针对业务上可能面临的较大的业务安全风险(如资金损失、交易事务一致性被破坏); (4)需求分析或需求规格应和业务代表确认,确保项目组和业务对需求的理解保持一致. 输入 应用程序安全需求表 质量门checklist 风险评估 输出 XX应用程序安全需求表 XX应用系统质量门checklist XX应用系统安全风险列表 相关工具 知识管理系统(Wiki) 工作进度管理系统 Bug跟踪管理系统(bug栏)
培训 需求 设计 开发 测试 发布 上线
控制目标 评估安全设计、威胁模型、攻击面消减是否达到了设计的要求。应用程序经常会严重偏离在软件开发项目要求 和设计阶段所制定的功能和设计规范,因此,在应用程序完成编码后重新进行评估其是非常重要的。 控制措施 (1) 对应用程序进行白盒测试,通过对代码进行静态安全审计,发现系统的安全漏洞和风险; (2) 对应用程序进行黑盒测试, 通过模拟的攻击渗透测试,发现系统的安全漏洞和风险; (3) 录制项目功能流程,遍历项目在威胁模型中涉及到功能或流程,测试其输入输出数据在内存或其它场景下产 生的变化,发现可能存在的安全漏洞; (4)对应用程序进行性能压力测试,通过测试发现系统的性能瓶颈,验证是否达到设计的指标, 发现系统中可能 被恶意用户利用的业务RDS漏洞; 输入 安全测试方案 输出 代码审计报告 渗透测试报告 压力测试报告 安全整改方案 相关工具 代码审计软件 渗透测试软件
❖ strncpy, wcsncpy, _tcsncpy, _mbsncpy, _mbsnbcpy, StrCpyN, StrCpyNA, StrCpyNW, StrNCpy, strcpynA, StrNCpyA, StrNCpyW, lstrcpyn, lstrcpynA, lstrcpynW
❖ strncat, wcsncat, _tcsncat, _mbsncat, _mbsnbcat, StrCatN, StrCatNA, StrCatNW, StrNCat, StrNCatA, StrNCatW, lstrncat, lstrcatnA, lstrcatnW, lstrcatn
危险的API清单
❖ strcpy, strcpyA, strcpyW, wcscpy, _tcscpy, _mbscpy, StrCpy, StrCpyA, StrCpyW, lstrcpy, lstrcpyA, lstrcpyW, _tccpy, _mbccpy
❖ strcat, strcatA, strcatW, wcscat, _tcscat, _mbscat, StrCat, StrCatA, StrCatW, lstrcat, lstrcatA, lstrcatW, StrCatBuff, StrCatBuffA, StrCatBuffW, StrCatChainW, _tccat, _mbccat
培训 需求 设计 开发 测试 发布 上线
控制目标 在项目正式上线前确认各方面安全要求已经满足,并经过正式评审可以发布 控制措施 (1)制定安全应急响应预案,建立应急响应流程/处理列表; (2)对照“系统安全部署方案”对网络拓扑,网络设备,安全设备,操作系统,Web和中间件服务器,数据库, 其它第三方服务应用等进行安全配置,以达到方案中的要求; (3)建立上线审核机制,进行最终安全评审,在软件或项目发布之前根据质量门、设计规范进行评审确定是否正式 发布; 输入 通用应急响应预案 安全配置基线 上线评审制度、流程、质量门要求 输出 应急响应计划 运维规范(包括上线审核制度) 相关工具 安全配置基线
❖ strtok, _tcstok, wcstok, _mbstok ❖ makepath, _tmakepath, _makepath,
_wmakepath, _splitpath, _tsplitpath, _wsplitpath ❖ scanf, wscanf, _tscanf, sscanf, swscanf, _stscanf, snscanf, snwscanf, _sntscanf ❖ _itoa, _itow, _i64toa, _i64tow, _ui64toa, _ui64tot, _ui64tow, _ultoa, _ultot, _ultow ❖ gets, _getts, _gettws ❖ IsBadWritePtr, IsBadHugeWritePtr, IsBadReadPtr, IsBadHugeReadPtr, IsBadCodePtr, IsBadStringPtr ❖ strlen, wcslen, _mbslen, _mbstrlen, StrLen, lstrlen
风险意识。培训对象包括开发人员、测试人员、项目经理、产品经理等。 控制措施 (1)制定强制性的最低的培训周期;设定最低培训门槛(例如:在项目开始之前100%的项目开发员工都必须接受培训); (2)安全不是一成不变的,应对开发人员进行持续不断的培训; (3)培训内容应包括基本安全知识培训(针对开发,测试人员)和高级安全知识培训(针对产品经理,核心开发人员),
较低受攻击面 默认关闭
关闭网络连接 仅侦听TCP流量 鉴别用户访问
强ACLs 普通用户访问 本地子网访问 代码以Network Services、Local Services 或自定义的低权限账户运行 用户可选的配置
.NET代码 未标记有脚本安全的ActiveX控件
SiteLocked ActiveX控件
课程包括安全技术、安全意识及安全规范,形式包括内部培训和外部机构、专家培训(如OWASP安全开发生命周期(SDL) 培训);
(4)培训结束后应进行考核,考核成绩应记入人员绩效考核成绩; 输入 培训教材 培训考卷 输出 培训记录表 考核成绩记录表 审核指标 项目开发人员参与培训率、考试合格率100% (半年内的培训、考核有效)
安全需求
质量门和 BUG栏
安全设计 规范
安全部署 方案
安全风险
攻击面分 析
威胁建模
安全开发 工具
安全开发 规范
安全开发 最佳实践
代码审计 渗透测试 压力测试
安全API
应急方案 应急响应
集成环境 安全加固
安全巡检
运维规范 漏洞扫描
安全监控
培训 需求 设计 开发 测试 发布 上线
控制目标 开发团队的所有成员都必须接受适当的安全培训,了解安全基础知识以及安全和隐私漏洞方面的最新趋势,树立安全
基本安全培训内容
安全设计
业务安全
安全编码
HASP加 /解密算 法安全
隐私保护
减 小 攻 击 面
深 度 防 御
最 小 权 限 原 则
安 全 默 认 设 置
用 户业 登务 陆/ 流 注转 册
交 易 数 据 篡 改
缓 XS 跨 SQ 文
冲 S 站 L 件硬
区漏点注上编
溢洞脚入传码
出
本
加/ 隐
源自文库
隐
解私
私
HA 密 SP 算
❖ CharToOem, CharToOemA, CharToOemW, OemToChar, OemToCharA, OemToCharW, CharToOemBuffA, CharToOemBuffW
❖ alloca, _alloca
❖ wnsprintf, wnsprintfA, wnsprintfW, sprintfW, sprintfA, wsprintf, wsprintfW, wsprintfA, sprintf, swprintf, _stprintf, _snwprintf, _snprintf, _sntprintf, wvsprintf, wvsprintfA, wvsprintfW, vsprintf, _vstprintf, vswprintf, _vsnprintf, _vsnwprintf, _vsntprintf, wvnsprintf, wvnsprintfA, wvnsprintfW
上线评审 checklist
培训 需求 设计 开发 测试 发布 上线
控制目标 确定项目上线后的安全运维,保证系统安全的持续性 控制措施 (1)开展安全监控运维,从各层次监控应用系统安全状况; (2)开展安全巡检运维,定期检查系统各层次(OS、DB、中间件、网络等)安全配置变化情况,并根据安全基线 予以修正; (3)开展安全扫描运维,定期对系统进行OS、应用进行漏洞扫描和渗透测试,发现最新漏洞并予以修正; (4)建立应急事件响应程序,对系统发生的安全事件予以响应处置; 输入 安全巡检手册 安全漏洞管理制度 输出 应急响应流程 安全运维规范(包括扫描、巡检、监控制度) 相关工具 安全配置基线
需求
ASR(受攻击面降低)原则
降低默认执行的代码量 限制可访问到代码的人员范围 限定可访问到代码的人员身份 降低代码所需权限
ASR(受攻击面降低)措施
较高受攻击面 默认执行
打开网络连接 同时侦听UDP和TCP流量
匿名访问 弱ACLs 管理员访问 因特网访问
代码以管理员或root权限运行
统一缺省配置 ActiveX控件 标记有脚本安全的ActiveX控件 非SiteLocked ActiveX控件
信息资产
存在
安全漏洞
利用
安全威胁
造成影响 程度
发生可能性
应对措施 (消减技术)
威胁模型
消减措施
培训 需求 设计 开发 测试 发布 上线
控制目标 确保安全设计规范中描述的安全控制设计、方案及威胁消减原则在开发过程中得以贯彻执行 控制措施 (1)充分了解并建立可靠的安全开发工具库(包括语言、虚拟机、IDE环境、引用的第三方工具包); (2)制定安全开发最佳实践,指导开发人员进行安全编码; (3) 建立安全开发规范; (4) 建立常见安全漏洞、不安全函数、危险的API列表; 输入 安全开发工具清单 安全开发规范 安全开发最佳实践 安全开发培训 输出 安全开发工具库 安全开发培训考卷 常见安全漏洞、不安全函数、危险的API列表(建立工具库不断积累)
SDL安全开发生命周期
安全开发生命周期 (SDL) 是侧重于软件开发的安全保证过程 ,SDL 致力于减少设计,开发中软件 的漏洞数量和严重性问题。通过预防、检测和监控措施相结合的方式,从而降低应用安全开发和维护 的总成本,保证系统的安全性。
培训 需求 设计 开发 测试 发布 上线
安全技术 安全意识 安全规范
应用程序安全需求(基线)
培训 需求 设计 开发 测试 发布 上线
控制目标 将识别出的信息系统安全需求落实到应用技术框架及结构设计中,并形成相关规范
控制措施 (1) 制定安全设计规范,包括通用型安全设计规范和针对特定系统的业务安全设计规范。规范内容通常包括加密 技术的使用、敏感数据文件长期备份以及恢复措施、数据库明文或加密存储等安全级别、评估第三方软件 的许可等; (2)制定安全部署方案,包括网络环境、系统环境、中间件、数据库、安全防护措施、开放端口、第三方接口、软 件版本等内容;; (3)进行ASA(Attack Surface Analysis,受攻击面分析),制定ASR(Attack Surface Reduction,受攻击面降低) 措施 (4)进行威胁分析,建立威胁模型,帮助理解系统中潜在的安全威胁,明确风险并建立相应消减机制; 输入 安全设计规范 安全部署方案(含安全配置基线) 威胁分析模型 输出 XX系统安全设计规范 XX系统安全部署方案(含安全配置基线) XX系统威胁分析模型