荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: ainny (为你等待), 信区: Hacker
标  题: 绿色兵团安全公告SA00-01
发信站: BBS 荔园晨风站 (Sun Apr  2 18:00:35 2000), 转信

发信人: cloudsky (小四), 信区: Security
标  题: 绿色兵团安全公告SA00-01
发信站: 武汉白云黄鹤站 (Fri Mar 31 17:10:09 2000), 站内信件

发布日期: 2000-3-31

更新日期: 2000-3-31
受影响的系统:  ASP、PHP、Perl
--Microsoft SQL Server
--MySql
--Sybase
描述:
--------------------------------------------------------------------------------


                               绿色兵团安全公告    SA00-01
                               ===========================

                            国内电子商务站点存在严重安全隐患

发布日期: 2000/3/31



一、  综      述

    随着国内电子商务的逐渐升温,网上交易的安全性问题日益引起关注。中国互联网
    中心(CNNIC)于一月十八日发布的《中国互联网络发展状况统计报告》中关于电子
    商务的调查结果表明,目前用户最关心的问题就是网上交易的安全问题。由此可见,
    电子商务能否在国内顺利发展,其重要前提就是网上交易的安全性必须得到保证。

    近日发现,国内90%以上的电子商务站点存在一些具有普遍性的严重安全漏洞,攻击
    者可以轻易盗取用户帐号、交易密码,并可使用用户资金进行网上交易。这些安全
    漏洞将直接影响电子商务站点的信誉,对国内电子商务的发展进程将产生重大影响。
    目前,“绿色兵团”已经协助多家电子商务网站成功解决了这些安全问题。由于最
    近又有多家电子商务网站遭受到这种攻击,导致数据库资料受损或丢失,“绿色兵
    团”特就此发布安全公告。鉴于这些攻击可能对网站造成严重影响,本安全公告不
    公布具体的攻击细节。


二、  安 全 问 题 分 析

以下是对目前国内电子商务站点普遍存在的几个严重的安全问题的一些分析。

1、 客户端数据的完整性和有效性检查


1.1、特殊字符的过滤
在 W3C 的 WWW Security FAQ 中关于CGI安全编程一节里列出了建议过滤的字符:

&;`'\"|*?~<>^()[]{}$\n\r

这些字符由于在不同的系统或运行环境中会具有特殊意义,如变量定义/赋
值/取值、非显示字符、运行外部程序等,而被列为危险字符。W3C组织强烈
建议完全过滤这些特殊字符。但在许多编程语言、开发软件工具、数据库甚
至操作系统中遗漏其中某些特殊字符的情况时常出现,从而导致出现带有普
遍性的安全问题。

1.1.1、CGI和Script编程语言的问题

在几种国内常见的WEB编程语言中,ASP和Cold Fusion 脚本语言对特殊字符
的过滤机制不够完善,例如没有对单引号做任何处理等。Perl和php对特殊字
符的过滤则较为严密,如忽略或加上“\”(取消特殊字符含义)处理。C语
言编写的cgi程序对特殊字符的过滤完全依赖于程序员的知识和技术,因此也
可能存在安全问题。

1.1.2、Microsoft ASP脚本

普遍存在的问题是程序员在编写ASP脚本时,缺少或没有对客户端输入的数

1.1、特殊字符的过滤
在 W3C 的 WWW Security FAQ 中关于CGI安全编程一节里列出了建议过滤的字符:

&;`'\"|*?~<>^()[]{}$\n\r

这些字符由于在不同的系统或运行环境中会具有特殊意义,如变量定义/赋
值/取值、非显示字符、运行外部程序等,而被列为危险字符。W3C组织强烈
建议完全过滤这些特殊字符。但在许多编程语言、开发软件工具、数据库甚
至操作系统中遗漏其中某些特殊字符的情况时常出现,从而导致出现带有普
遍性的安全问题。

1.1.1、CGI和Script编程语言的问题

在几种国内常见的WEB编程语言中,ASP和Cold Fusion 脚本语言对特殊字符
的过滤机制不够完善,例如没有对单引号做任何处理等。Perl和php对特殊字
符的过滤则较为严密,如忽略或加上“\”(取消特殊字符含义)处理。C语
言编写的cgi程序对特殊字符的过滤完全依赖于程序员的知识和技术,因此也
可能存在安全问题。

1.1.2、Microsoft ASP脚本

普遍存在的问题是程序员在编写ASP脚本时,缺少或没有对客户端输入的数
普遍存在的问题是程序员在编写ASP脚本时,缺少或没有对客户端输入的数
据/变量进行严格的合法性分析。无意或有意输入的特殊字符可能由于其特
殊含义改变了脚本程序,从而使脚本运行出错或执行非法操作。例如,当脚
本程序需要进行数据库操作时,恶意用户可以利用嵌入特殊字符来突破脚本
程序原先的限制。因此,如果攻击者输入某些特定sql语句,可能造成数据库
资料丢失/泄漏/甚至威胁整个站点的安全。比如攻击者可以任意创建或者删
除表(如果可以猜测出已存在的表名),清除或者更改数据库数据。攻击者
也可能通过执行一些储存过程函数,将sql语句的输出结果通过电子邮件发送
给自己,或者执行系统命令。

1.1.3、PHP和Perl

虽然提供了加上”\”(取消特殊字符含义)处理的手段,但是处理一些
数据库时依然可以被改写。(我们本地的测试证实了这情况。)请阅读
下面关于数据库问题的分析。对于MySQL则没有问题,\'不会与前面的单
引号封闭,而当作一个合法的字符处理。针对oracle和informix等数据库
暂时未进行相关测试。另外,对于PHP或者Perl语言,很多程序对于数字
类型的输入变量,没有加单引号予以保护,攻击者就有可能在这种变量中
加入额外的SQL语句,来攻击数据库或者获得非法控制权限。

1.2、数据库问题

不同的数据库对安全机制的不同认识和实现方法,使它们的安全性也有所
不同的数据库对安全机制的不同认识和实现方法,使它们的安全性也有所
不同。最常见的问题是利用数据库对某些字符的不正确解释,改写被执行
的SQL语句,从而非法获得访问权限。例如,Microsoft SQL Server和
Sybase对 \'当作了两个不同字符,所以仅仅在程序中加上”\”仍然可能
通过一些特殊手段改写 SQL语句突破数据库的安全防线。
Microsoft SQL Server也将”—“作为注释符号,这个符号以后的SQL语
句均被忽略,攻击者可能利用这个来屏蔽掉某些用来认证的SQL语句(例如
口令验证),获得对合法用户帐号的控制权。MySQL则将\'作为一个可操作
的正常字符,不存在利用\'改写的可能。其它数据库如Oracle、Informix
和MiniSQL等也必须注意防止各种改写SQL语句的可能。

(注:另外,迄今为止,各种数据库都或多或少地被发现存在不同程度
上的安全漏洞。如Microsoft SQL拒绝服务漏洞,MySQL GRANT权限可改变
任意用户口令的漏洞,MySQL 远程绕过口令限制的漏洞,MiniSQL远程缓
冲区溢出漏洞,Oracle Web Listener 非授权访问漏洞,Oracle dbsnmp
符号连接漏洞,Sybase PowerDynamo目录遍历漏洞,等等。由于数据库数
据资料是电子商务网站的最重要部份,关系到电子商务网站的生死存亡,
因此修补各种安全漏洞,保证数据库免受各种攻击,是绝对必要的!
声明:本次安全公告不包含以上漏洞的内容。如有需要请向“绿色兵团”咨
询详细资料。)

2、 Cookie或用户身份的常用认证问题


对于一个网站会员而言,经常存在需要一次注册,多次认证的问题,一
般采用手段为cookie或 input type=hidden来传递认证参数。这里面有几
点隐患:

I.  所携带内容必须完整包含帐号密码,或类似的完整安全信息,如果只
携带帐号信息或用某种权限标志来认证,极容易造成非法入侵,我们检测
了一些电子商务网站,很多都有此类安全隐患。例如某站点中的会员更新
页面中携带的认证信息是两个,用户名和Uid(均为明文传送)已知Uid对于
每个会员是唯一的。由于我们只需要知道对方的帐号和Uid就可以更改对方
信息(不需要知道密码!),只要攻击者知道Uid(攻击者可以通过暴力
猜测的方法来得到Uid,有时候站点本身也会泄露用户的Uid,例如在论坛
等处)那么,攻击者就可以通过遍历攻击完成对任意一个帐号的信息更改。

II. 必须所有需要权限操作的页面都必须执行认证判断的操作。如果任
何一页没有进行这种认证判断,都有可能给攻击者以恶意入侵的机会。

III.  很多网站为了方便,将用户名以及口令信息储存在Cookie中,有
的甚至以明文方式保存口令。如果攻击者可以访问到用户的主机,就可
能通过保存的Cookie文件得到用户名和口令。

3、 大量数据查询导致拒绝服务


许多网站对用户输入内容的判断在前台,用JavaScript判断,如果用户
绕过前台判断,就能对数据库进行全查询,如果数据库比较庞大,会耗
费大量系统资源,如果同时进行大量的这种查询操作,就会有
Denial of Service(DoS —— 拒绝服务)同样的效果。

三、  解  决  方  案

1、客户端数据完整性和有效性检查的解决办法

根据目前国内电子商务网站普遍存在的安全问题,主要的原因是未对
某些特殊字符——例如单引号(’)进行过滤,或过滤机制不够完善。
因此较为根本的解决方法是加强过滤机制,对用户输入数据进行全面
的检查。以对ASP + Microsoft SQL Server类型的网站危害比较大的
单引号(’)为例。目前可以肯定的是仅仅通过加上”\”或双引号
处理是不健全的,必须杜绝单引号在处理程序的SQL语句中出现。

解决办法:

I.    对于从客户端接收的数据变量应该用"’"(单引号)来引用;

II.    对用户输入的所有数据进行合法性检查(尽可能放在后台校
验),包括数据长度和数据内容,将其中的特殊意义字符替换或不予
验),包括数据长度和数据内容,将其中的特殊意义字符替换或不予
往下执行。例如,将"’"替换成"’’" (两个单引号)号或用双字节
中文单引号替换;而对于数字型变量,要检查输入的数据是否全为数字。

III.  对象数据库不使用系统默认的dbo用户。并尽量减少新增用户的权限;

以ASP为例,具体的实现可以通过函数Replace函数来实现,如:

<%
username=Replace(trim(Request.Form(“username”)),”’”,”’”)
password=Replace(trim(Request.Form(“password”)) ,”’”,”’”)
%>
以上例子将变量username与password中的字符”’”(单引号)替换
成双字节中文单引号。

如希望用户能使用单字节单引号”’”,可参考使用如下函数:
<%
function CheckStr(str)
dim tstr,l,i,ch
    l=len(str)
    for i=1 to l
        ch=mid(str,i,1)
        if ch="’" then
        if ch="’" then
           tstr=tstr+"’"
        end if
        tstr=tstr+ch
    next
    CheckStr=tstr
end function
%>

该函数将需要校验的数据中的单字节单引号后添加了"’",
这样,送入SQL中的"’"就变成了"’’",当输出该字段数据时,
该项内容中的"’’"输出为"’"。对于其他的CGI编程语言,可
以参照上述方法的思路进行处理。

2、 Cookie或用户身份的常用认证问题的解决办法

由于session (会话)机制主要由服务器控制,比利用cookie传
递认证参数更为安全可靠,因此可使用session会话取代cookie认
证。如果必须使用Cookie传递参数,必须将参数内容进行加密,
并正确设置Cookie的有效时间。

3、 大量数据查询导致拒绝服务的解决办法


为了安全起见,应该将可能导致出现这种拒绝服务攻击的
Javascript移植到由服务器端执行,防止客户端向服务器
提交过量的数据库操作。

4、
若对本次安全公告有不明之处,请与我们联系获得进一步的帮助。
鉴于此漏洞的严重性,我们将向国内站点提供解决这个安全问题
的免费技术支持。

联系方式:

    010-64601987
    010-64689557(传真)
    013910723925(潘先生)
    Email:  isbase@263.net

    特别感谢:清华isme工作组


四、声     明

本安全公告仅用来描述可能存在的安全问题,帮助国内站点解
本安全公告仅用来描述可能存在的安全问题,帮助国内站点解
决严重的安全问题,中联绿盟信息技术公司不为此安全公告提
供任何保证或承诺。由于传播、利用此安全公告所提供的信息
而造成的任何直接或者间接的后果及损失,全部均由使用者本
人负责,中联绿盟信息技术公司以及安全公告作者不为此承担
任何责任。中联绿盟信息技术公司拥有对此安全公告的修改和
解释权。如欲转载或传播此安全公告,必须保证此安全公告的
完整性,包括版权声明等全部内容。未经中联绿盟信息技术公
司允许,不得任意修改或者增减此安全公告内容,不得以任何
方式将其用于商业目的。

五、关 于 我 们

中联绿盟信息技术公司成立于2000年3月,是国内专业从事网络
安全服务的高科技企业,其前身为国内最著名的网络安全组织
“绿色兵团”。 中联绿盟信息技术公司致力于提高国内的网络
安全水平,为客户提供强有力的安全保障。公司主要由清华大
学、中国科技大学、同济大学的博士、硕士组成,技术实力强
大。公司刚刚成立一个月,已与国内多家著名网络服务商签定
了网络安全服务协议。欲获得更详细的公司信息,请参观中联
绿盟信息技术公司的站点:

--
司允许,不得任意修改或者增减此安全公告内容,不得以任何
            我问飘逝的风:来迟了?
            风感慨:是的,他们已经宣战。
            我问苏醒的大地:还有希望么?
            大地揉了揉眼睛:还有,还有无数代的少年。
            我问长空中的英魂:你们相信?
            英魂带着笑意离去:相信,希望还在。

※ 来源:.武汉白云黄鹤站 bbs.whnet.edu.cn.[FROM: 203.207.226.124]

--
☆ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: bbs@192.168.28.23]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店