当前位置:文档之家› 软件安全静态分析工具FindBugs

软件安全静态分析工具FindBugs

26
软件安全

17
软件安全
几个常见致命安全漏洞
缓冲区溢出 SQL注入 跨站脚本

18
软件安全
缓冲区溢出




当一个程序允许输入的数据大于已分配的缓冲区大 小时,缓冲区溢出就会发生。 有些语言具有直接访问应用程序内存的能力,如果 未能处理好用户的数据就会造成缓冲区溢出。C和 C++是受缓冲区溢出影响的两种最常见的编程语言。 缓冲区溢出造成的后果小到系统崩溃,达到攻击者 获取应用程序的完全控制权。 1988年,第一个Internet蠕虫—Morris蠕虫就是对 finger服务器攻击,造成缓冲区溢出,几乎导致 Internet瘫痪。

25
软件安全
其他致命安全漏洞



格式化字符串 整数溢出 命令注入 未能处理错误信息 未能保护好网络流量 使用Magic UPL及隐藏表单字段 未能正确使用SSL和TLS 使用基于弱口令的系统 未能安全的存储和保存数据 信息泄露 不恰当的文件访问 清新网络域名解析 竞争条件 未认证的密钥交换 密码学强度随机数 不良可用性

20
软件安全
SQL注入

通过把SQL命令插入到Web表单递交或输入域名或 页面请求的查询字符串,最终达到欺骗服务器执行 恶意的SQL命令。 任何可以与数据库交互的编程语言都可能出现SQL 注入漏洞。 SQL注入的最大的威胁是攻击者可以获得隐私的个 人信息或者敏感数据;也可能导致服务器甚至网络 的入侵。
软件安全
主讲内容
软件安全概念
软件漏洞
风险管理框架
安全开发生命周期
软件安全的七个接触点
2
软件安全
许多关键基础设施取决于计算机安全
3
软件安全
关于软件安全的相关报道
4
软件安全
软件安全概念

出现软件故障现象的原因是软件存在漏洞。 “任何软件,不论它看起来是多么安全,其中都隐 藏漏洞”。 软件安全的目的是尽可能消除软件漏洞,确保软件 在恶意攻击下仍然正常运行。
19
软件安全
缓冲区溢出

Morris finger蠕虫的成因: char buf[20]; gets(buf); 另一个缓冲区溢出例子: char buf[15]; char prefix[]=“http://”; char path[]=“”; strcpy(buf,prefix); strcat(buf,path,sizeof(path));
如果传递来的参数是“1 or 2>1 --”,则执行SQL语句: SELECT conum FROM cust WHERE id=1 or 2>1 -22
软件安全
跨站脚本



跨站脚本(XSS,Cross-site Scripting)漏洞是一类 专门针对Web应用程序的漏洞,它会使得产生漏洞 的Web服务器绑定的用户数据(通常保存在cookie中) 被泄露给恶意的第三方。 所谓“跨站”是指;当一个客户端访问了可正常提 供服务但是有漏洞的Web服务器后,cookie从此客户 端传递给了攻击者控制的站点。 任何用于构建网站的编程语言或者技术都可能受到 影响。

未在安全上下文环境中执行验证 验证例程不集中 不安全的组件边界 大的攻击面 在过高权限级别上运行进程 没有纵深防御 失效时处理不安全

薄弱的结构性安全

15
软件安全
常见的安全设计问题

其他

代码和数据混在一起 错将信任寄予外部环境 不安全的默认值 未作审计日志
16

5
软件安全
报告给CERT/CC的与安全相关的软件弱点
6
软件安全
软件安全问题加剧的三个趋势

互联性

多数计算机与Internet相连 多数软件系统互联于Internet

可扩展性

通过接受更新或者扩展件使系统升级
代码行数增加、网络式、分布式

复杂性

7
软件安全
Windows操作系统复杂性
8
软件安全
实现漏洞示例

2001年的红色代码(Code Red)蠕虫利用Microsoft 的IIS Web服务器的软件缺陷。

字符串变量是Unicode字符类型的(每个字符占用两 个字节),在计算缓冲区的时候应该是偏移量为2, 但IIS在计算缓冲区大小的时候却按照偏移量为1错 误的计算缓冲区。
导致在14个小时内,就有359000台机器感染了红色 代码蠕虫。
软件安全
J2EE的N层架构举例
9
软件安全
漏洞
10
软件安全
漏洞
11
软件安全
Байду номын сангаас
漏洞



所有的软件都存在潜伏的漏洞 安全必须经过证明 软件安全漏洞可分为两大类: 设计漏洞 实现漏洞
12
软件安全
设计漏洞示例


Microsoft Bob是作为Windows ME和Windows 98的辅 助程序而设计的,其中包含一个设置系统密码的工 具。 当用户试着输了三次(不正确)密码时,Bob将弹 出如下的信息:“我想你忘记了你的密码,请输入 一个新的密码。”然后,就允许用户修改密码,即 使不知道老密码。
23
软件安全
跨站脚本
24
软件安全
跨站脚本

<% String eid = request.getParameter("eid"); %> ... Employee ID: <%= eid %> XSS测试语句之一: ><script>alert(document.cookie)</script>


21
软件安全
SQL注入
public static boolean doQuery(String Id){ …… try { …… Statement st=….; ResultSet rs=st.executeQuery(“SELECT conum FROM cust WHERE id=”+Id); while(rs.next()){ ….. } catch…… }
13
软件安全
常见的安全设计问题

密码技术使用的败笔

创建自己的密码技术 选用了不当的密码技术 依赖隐蔽式安全 编写到程序中的密钥 错误的处理私密信息 会话管理薄弱或缺失 身份鉴别薄弱或缺失 授权薄弱或缺失
14

对用户及其许可权限进行跟踪

软件安全
常见的安全设计问题

有缺陷的输入验证
相关主题