web服务器扫描工具:Nikto2,Websecurity(为测试者提供交互页面,快速便捷地对web漏洞进行扫描,包括SQl注入、跨站脚本、文件包含、跨站请求伪造等)
漏洞利用(Exploitation):测试者通过目标系统漏洞, 绕过系统防护机制,获取系统控制权限。漏洞利用程序,漏洞攻击程序(Exploit):预先打包发 送到目标系统中的代码集,引发异常行为,以使我们能 够执行攻击载荷。 攻击载荷(Payload):一段代码,用于完成安装新软件、 创建新用户、开启后门等任务。示例: 创建一个滥用案例(Cigital提供) 一个处理敏感财务数据库的C/S应用程序
服务器端依靠客户端管理所有的数据访问许可 服务器端不再检查用户的真实证书,就直接授权 客户端存储有敏感数据库的一份完整的拷贝 客户端程序运行在普通PC上滥用案例
根据“伪装客户端(make the client invisible)”攻击模式 通过嗅探网络数据流构建一个恶意客户端 通过该恶意客户端与服务器端通信,骗取服务器授权,帮助恶意用户成功读取服务器数据库中信息5.1 安全风险分析方法中的共同主题
分析对象(深入了解待分析的软件对象) 阅读和理解规范、体系结构文档及其他设计材料进行讨论和头脑风暴确定系统便捷和数据敏感度/重要程度实际使用软件研究代码和其他的软件工作(包括代码分析工具)分析环境(讨论围绕软件对象的安全问题) 对软件的运行情况展开讨论,确定有异议或含糊的地方识别可能的安全弱点,可借助工具和常见弱点列表给出安全弱点利用程序(POC),并讨论可能的修补方法理解当前的和规划的安全控制(留意它们可能引入的新风险)识别危害(确定被入侵的概率) 制定利用安全缺点攻击的脚本综合平衡与防御能力,确定入侵的可能性分析影响(分析风险影响) 确定风险对资产及商业目标的影响考虑风险对安全状态(posture)的影响风险评级降低风险(制定消除风险的策略) 推荐一些可以消除风险的应对措施(countermeasure)形成报告(报告风险分析的结果) 依据影响大小,仔细说明主要和次要风险提供一些基本信息,说明如何使用消除风险的有效资源SDCL + BSI –> SDL
几个术语
COTS 商业现货软件 MSA(Master Service Agreement) 主要服务合同SoW (Statement of Work) 工作说明 SLA (Service Level Agreement) 服务水平合同 QoS 服务质量编码错误分类:
输入确认和表示 由元字符、交替出现的编码和数字表示引起的。应使用白名单进行输入确认。轻信输入导致的问题包括:缓冲区溢出、SQL注入、缓存中毒(Cache Poisoning) 等 。API滥用 API是调用者与被调用者之间的一种契约。API调用者未能遵守契约。例如:没有在调用chroot()之后调用chdir()。安全特性 软件安全不等于具有安全性的软件。例如:用SSL保护数据时间与状态 在分布式计算环境中,为让多个组件互相通信,就需要共享状态。用传统的程/序执行模型描述并行化执行操作,就容易产生与线程、过程、时间和信息之间的意外交互相关的错误。错误处理 现代程系统异常处理机制在一程度上与使用goto语句相似。错误和错误处理程序是一类编程契约。 代码质量 安全性是可靠性的子集。 封装 封装是在事物之间划清界线并在其间设置屏障。 *_环境 环境包含位于你的代码之外,但对软件的安全至关重要的所有事物。应跳到软件之外,从外向内看。判断对错:
我的系统安装了杀病毒软件、防火墙、IDS(入侵 检测系统) 等产品,因此是安全的。 即使安装了网络安全防护产品,但如果所防护的软件(比如浏览器)存在漏洞或后门,攻击者仍然可以通过浏览器穿透防护而入侵系统。 如果软件自身存在安全缺陷,就存在穿透外围的网络安全防护的风险,系统就不是安全的。
微软的Windows10是最安全的Windows操作系统。 我的电脑预装win10,因此我的系统就安全了。 预装系统如果没有及时升级和修补漏洞,就无法保证是安全的。 软件的随时在线升级和模块(插件)动态装在,使软件动态化。安全也必须是动态安全。
我的系统中采用最好的加密算法,难以破解。因此是安全的。 虽然采用最好地加密算法,但如果在编程实现上存在缺陷,系统也是不安全的。 只有(算法)涉及和开发实现都是安全的,才能确保最终安全。
我的系统采用了可信计算体系,因此是安全的。 可信计算依靠环环相扣的信任链,如果其中的软件存在安全缺陷,就有可能被攻击者利用来骗取信任。 只有(算法)涉及和开发实现都是安全的,才能确保最终安全。
我的系统是自己开发的,因此是安全的。 系统虽然是自己开发的,但难免调用第三方构建库;或者没有遵循安全的开发过程,都可能导致系统存在安全隐患。 当今商业软件的开发依赖于全球供应链,开发过程需要有一套行之有效的安全保障方法。
网络攻防就是黑客的那些事儿。 当今的网络入侵事件既有脚本小子的捣鼓,也有国家级高水平、有组织的体系化网络攻击。 网络战已悄然打响。
什么是软件安全? 软件安全是网络空间安全的重要部分,主要研究软件自身的安全问题 、防护及评估技术,以及软件安全的工程化保障方法