打造完全免费的个人电脑安全防线

不可否认,绝大多数的电脑使用者在使用各类侵权的软件,在个人安全防护方面使用盗版的情况更加严重。有些是通过共用注册号,有些是通过破解的方式非法使用一些防毒软件和个人防火墙,但是此类情况被软件厂商发觉后往往会ban掉此类注册码,或者升级主程序来避免破解;还有些用户这是使用企业版防毒软件对产品授权的控管不严,而侵权使用此类软件。收费的这些安全产品自然有他们的过人之处,有卖点才会有人掏钱去购买此类软件,才会有人趋之若鹜的去搞盗版。但是我们完全可以避免使用盗版软件的风险,而正大光明的使用免费的安全防护产品,这些免费的午餐中也不乏精品。
首先是要极力推荐的防毒软件AntiVir(http://www.free-av.com),德国的防毒软件,个人版是免费的,病毒库非常强大,更新速度很快,基本上每天会更新2/3次,界面很友好,它的logo是一把小红伞,这个防毒软件出众的地方在于它的识别率、解壳的能力和最快速度的病毒码更新,这很大程度保证了使用此防毒软件的用户可以免受最新病毒的攻击。
另一个免费的就是Comodo(http://www.comodo.com)个人防火墙,原来我也是一直用zonealarm的,但是最近看了一个防止内部程序leak的测评报告,comodo可是排名第一的。刚试用了一天,感觉还不错。
这下,我的个人电脑安全防线可就是全部由免费软件筑就的了,谁说免费的没有收费的强呢!

又有两个漏洞,微软要忙死了

刚刚紧急处理好VML漏洞的事情,紧接着又报出两个漏洞。

一个是关于activeX的漏洞,另一个是office powerpoint的漏洞。都是缓冲区溢出的漏洞,可以被drop恶意代码的。

第一个漏洞的攻击代码已经公开,很快攻击、病毒就会随之而来。

第二个漏洞则是先发现攻击行为才意识到PPT存在的这个漏洞的。

都比较重要,又要等微软出补丁了,估计微软又要在10月10日前提前出补丁了。

第一个activex的漏洞,没有补丁也可以暂时防一防,只要禁用activex就行了。但是第二个PPT的漏洞就麻烦了,PPT作为办公常用文档,天天碰到,难保哪天就误点了就中招了,而且受影响的office是所有版本,包括苹果机上的office版本,这几天升级个人防毒软件勤一点吧,经常看看windows出没出补丁。大家好运。

最新MSN蠕虫通过微软pif过滤漏洞进行传播

最近有两种MSN蠕虫,通过发送一串网址链接

 

不同的网址链接到不同变种的trojan木马或者广告程序。不仅如此通过IM传播的蠕虫病毒也被同时下载,然后就自动运行并向msn联系人发送同样的这些链接信息。

似乎和以前的msn传播的病毒没多少两样,但是这次却很有意思。

你可以注意到链接文件的后缀名是".PIF",但是你们也许还会记得微软已经阻止了含有".pif"的msn信息。

这是怎么回事呢?哈哈哈,原来微软的阻止规则是区分大小写的!

这样,类似的"Pif""pIf"都可以通过微软的过滤。因此大家要格外引起重视哦,千万别小看了这个漏洞哦。因为前连天说的那个VML的漏洞还没有官方的补丁发布哦。难说哪个制作病毒的人就利用这两个漏洞联合出击了。

在中国私自拥有邮件服务器很有可能会坐牢

中国最近出台了一个新的法规,私自拥有没有登记过的邮件服务器将是犯罪行为,期望来解决垃圾邮件的问题。企业和ISP必须在邮件服务器搭建后的20天内通知政府相关部门,并且必须强制保留所有邮件至少60天以上。这个法规同时认定通过邮件讨论信息安全(Information Security)将和讨论其他已经被明令禁止的敏感信息一样,一并视为违法行为。

多和谐啊。原本是出于反垃圾邮件目的的法规,现在却如此收场。中国正利用它的法律在互联网上加紧自己的势力范围,简单而又直接。既然是这样,为什么还要假借反垃圾邮件的名义呢?不就是让政府肆意侵犯公民隐私权所谓的合法化嘛,随便看任何他们想看的邮件嘛。我是蛮奇怪的,为什么他们只要求邮件只存档60天呢?为什么不存个一年半载呢?也许这是下一步的计划吧。

Translated from http://www.computerworld.com/blogs/node/3522

新发现IE浏览器VML缓冲器溢出漏洞及临时应对办法

又是一个利用浏览器的漏洞远程执行代码,不过这次可能被感染的途径只可能是通过浏览恶意网站和查看html格式的邮件。
微软关于这个漏洞昨天发布了安全建议http://www.microsoft.com/technet/security/advisory/925568.mspx
针对性的补丁计划在10月10日发布。微软每个月都要这么来一次
等到10月10日微软放出security update的时候,也许利用这个漏洞的页面已经出现了,攻击也会随之而来,面对这种0day攻击的防护真空期,我们得想点临时的解决办法。
可以通过注销明确存在漏洞的VML相关dll,来躲避这个存在的风险。
在开始-运行

regsvr32 /u "%CommonProgramFiles%Microsoft SharedVGXvgx.dll"

注销vgx.dll就行了。
VGX是主要处理VML(Vector Markup Language)的,具体VML是干什么的,我不是很懂,但大致是处理页面中的矢量图形的。互联网大多数的网站页面没有用到VML,所以注销这个插件也不是很大的影响,而且VML是微软的IE独有的,firefox和opera则支持SVG(Scala ble Vector Graphics )
可以通过IE访问http://webfx.eae.net/dhtml/VMLClock/clockScriptlet.html来看看VML的一个sample。若是没注销vgx.dll的话应该看到一个时钟,注销了则应当啥都看不见。
微软的OE邮件客户端也同样存在这样的风险,但是好在email中显示的html默认的被归为限制站点,二进制和脚本行为都是禁用的。但是你通过IE浏览器去看webmail中的邮件同样存在风险哦。
所以强烈建议,赶快按上面说的注销这个动态链接库文件吧。
翻译并添油加醋自http://www.f-secure.com/weblog/archives/archive-092006.html#00000974

Mcafee不错的站点建议SiteAdvisor功能

Mcafee的http://www.siteadvisor.com/ 站点,一个不错的功能。它提供了站点的分析和安全查询功能,这样大家在网上冲浪的时候,发现一些可疑站点,不能确定其是否安全,就可以到Mcafee的这个站点上进行查询寻求帮助。如果该站点没有被Mcafee分析过,也可以请求Mcafee对该站点的安全性进行评估。

这样有什么好处呢?大家都知道,现在的网上钓鱼越来越多,特别是网上银行的钓鱼事件层出不穷,对于经验不足的个人,很难判断你访问的站点是不是真实的银行支付门户。同样的,有些恶意的网站,不仅穿插了很多的广告,还放置了很多木马程序在上面,利用访问者IE浏览器的漏洞进行病毒释放,然后再窃取这些主机上的敏感信息。

对于“钓鱼”,目前公认比较好的解决办法也只有使用浏览器工具条。同样的Mcafee该站点也提供SiteAdvisor的IE工具条下载,在用户浏览网站的时候,实时提醒用户该站点的安全性和真实性。

大家可以试试查询电信的“互联星空”站点在Mcafee的SiteAdvisor上的评估结果。http://www.siteadvisor.com/sites/vnet.cn

When we tested this site we found links to chinavnet.com, which we found to be a distributor of downloads some people consider adware, spyware or other unwanted programs.

没有想到吧,意思就是互联星空的该站点分析后的结果是被认定为发布广告、间谍等恶意程序。

尽管电信一再辩解一再声明,但是我相信Mcafee的分析结果不会骗人,事实就是电信在强行分发广告、间谍程序。而且诱骗、强迫Adsl用户进行安装!更有甚者,电信还采用了HTTP劫持,重定向的技术,强行把未安装互联星空这个广告、间谍软件的用户的第一次互联网浏览重定向到vnet.cn页面,强迫用户进行安装。

幸好互联网的安全措施越来越多,网民的安全意识也有所提高,大家一定要加强上网的安全防范,一起抵制不良网站和恶意程序!

PHP and the OWASP十大安全漏洞

The Open Web Application Security Project released a helpful document that lists what they think are the top ten security vulnerabilities in web applications.

These vulnerabilities can, of course, exist in PHP applications. Here are some tips on how to avoid them. I’ve included related links and references where relevant.

1. Unvalidated Parameters

Most importantly, turn off register_globals. This configuration setting defaults to off in PHP 4.2.0 and later. Access values from URLs, forms, and cookies through the superglobal arrays $_GET, $_POST, and $_COOKIE.

Before you use values from the superglobal arrays, validate them to make sure they don’t contain unexpected input. If you know what type of value you are expecting, make sure what you’ve got conforms to an expected format. For example, if you’re expecting a US ZIP Code, make sure your value is either five digits or five digits, a hyphen, and four more digits (ZIP+4). Often, regular expressions are the easiest way to validate data:

if (preg_match('/^d{5}(-d{4})?$/',$_GET['zip'])) {
    $zip = $_GET['zip'];
} else {
    die('Invalid ZIP Code format.');
}
  

If you’re expecting to receive data in a cookie or a hidden form field that you’ve previously sent to a client, make sure it hasn’t been tampered with by sending a hash of the data and a secret word along with the data. Put the hash in a hidden form field (or in the cookie) along with the data. When you receive the data and the hash, re-hash the data and make sure the new hash matches the old one:

// sending the cookie
$secret_word = 'gargamel';
$id = 123745323;
$hash = md5($secret_word.$id);
setcookie('id',$id.'-'.$hash);

// receiving and verifying the cookie
list($cookie_id,$cookie_hash) = explode('-',$_COOKIE['id']);
if (md5($secret_word.$cookie_id) == $cookie_hash) {
    $id = $cookie_id;
} else {
    die('Invalid cookie.');
}

If a user has changed the ID value in the cookie, the hashes won’t match. The success of this method obviously depends on keeping $secret_word secret, so put it in a file that can’t be read by just anybody and change it periodically. (But remember, when you change it, old hashes that might be lying around in cookies will no longer be valid.)

See Also:

  • PHP Manual: Using Register Globals
  • PHP Cookbook: Recipe 9.7 ("Securing PHP’s Form Processing"), Recipe 14.3 ("Verifying Data with Hashes")

2. Broken Access Control

Instead of rolling your own access control solution, use PEAR modules. Auth does cookie-based authentication for you and Auth_HTTP does browser-based authentication.

See Also:

3. Broken Account and Session Management

Use PHP’s built-in session management functions for secure, standardized session management. However, be careful how your server is configured to store session information. For example, if session contents are stored as world-readable files in /tmp, then any user that logs into the server can see the contents of all the sessions. Store the sessions in a database or in a part of the file system that only trusted users can access.

To prevent network sniffers from scooping up session IDs, session-specific traffic should be sent over SSL. You don’t need to do anything special to PHP when you’re using an SSL connection, but you do need to specially configure your webserver.

See Also:

  • PHP Manual: Session handling functions
  • PHP Cookbook: Recipe 8.5 ("Using Session Tracking"), Recipe 8.6 ("Storing Sessions in a Database")

4. Cross-Site Scripting (XSS) Flaws

Never display any information coming from outside your program without filtering it first. Filter variables before including them in hidden form fields, in query strings, or just plain page output.

PHP gives you plenty of tools to filter untrusted data:

  • htmlspecialchars() turns & > " < into their HTML-entity equivalents and can also convert single quotes by passing ENT_QUOTES as a second argument.

  • strtr() filters any characters you’d like. Pass strtr() an array of characters and their replacements. To change ( and ) into their entity equivalents, which is recommended to prevent XSS attacks, do:
    $safer = strtr($untrusted, array('(' => '(', ')' => ')'));

  • strip_tags() removes HTML and PHP tags from a string.

  • utf8_decode() converts the ISO-8859-1 characters in a string encoded with the Unicode UTF-8 encoding to single-byte ASCII characters. Sometimes cross-site scripting attackers attempt to hide their attacks in Unicode encoding. You can use utf8_decode() to peel off that encoding.

See Also:

5. Buffer Overflows

You can’t allocate memory at runtime in PHP and their are no pointers like in C so your PHP code, however sloppy it may be, won’t have any buffer overflows. What you do have to watch out for, however, are buffer overflows in PHP itself (and its extensions.) Subscribe to the php-announce mailing list to keep abreast of patches and new releases.

See Also:

6. Command Injection Flaws

Cross-site scripting flaws happen when you display unfiltered, unescaped malicious content to a user’s browser. Command injection flaws happen when you pass unfiltered, unescaped malicious commands to an external process or database. To prevent command injection flaws, in addition to validating input, always escape user input before passing it to an external process or database.

If you’re passing user input to a shell (via a command like exec(), system(), or the backtick operator), first, ask yourself if you really need to. Most file operations can be performed with native PHP functions. If you absolutely, positively need to run an external program whose name or arguments come from untrusted input, escape program names with escapeshellcmd() and arguments with escapeshellarg().

Before executing an external program or opening an external file, you should also canonicalize its pathname with realpath(). This expands all symbolic links, translates . (current directory) .. (parent directory), and removes duplicate directory separators. Once a pathname is canonicalized you can test it to make sure it meets certain criteria, like being beneath the web server document root or in a user’s home directory.

If you’re passing user input to a SQL query, escape the input with addslashes() before putting it into the query. If you’re using MySQL, escape strings with mysql_real_escape_string() (or mysql_escape_string() for PHP versions before 4.3.0). If you’re using the PEAR DB database abstraction layer, you can use the DB::quote() method or use a query placeholder like ?, which automatically escapes the value that replaces the placeholder.

See Also:

7. Error Handling Problems

If users (and attackers) can see the raw error messages returned from PHP, your database, or external programs, they can make educated guesses about how your system is organized and what software you use. These educated guesses make it easier for attackers to break into your system. Error messages shouldn’t contain any descriptive system information. Tell PHP to put error messages in your server’s error log instead of displaying them to a user with these configuration directives:

log_errors = On
display_errors = Off

See Also:

8. Insecure Use of Cryptography

The mcrypt extension provides a standardized interface to many popular cryptographic algorithms. Use mcrypt instead of rolling your own encryption scheme. Also, be careful about where (if anywhere) you store encryption keys. The strongest algorithm in the world is pointless if an attacker can easily obtain a key for decryption. If you need to store keys at all, store them apart from encrypted data. Better yet, don’t store the keys and prompt users to enter them when something needs to be decrypted. (Of course, if you’re prompting a user over the web for sensitive information like an encryption key, that prompt and the user’s reply should be passed over SSL.)

See Also:

9. Remote Administration Flaws

When possible, run remote administration tools over an SSL connection to prevent sniffing of passwords and content. If you’ve installed third-party software that has a remote administration component, change the default administrative user names and passwords. Change the default administrative URL as well, if possible. Running administrative tools on a different web server than the public web server that the administrative tool administrates can be a good idea as well.

10. Web and Application Server Misconfiguration

Keep on top of PHP patches and security problems by subscribing to the php-announce mailing list. Stay away from the automatic PHP source display handler (AddType application/x-httpd-php-source .phps), since it lets attackers look at your code. Of the two sample php.ini files distributed with PHP ( php.ini-dist and php.ini-recommended), use php.ini-recommended as a base for your site configuration.

See Also:

操作系统使用空密码也ok拉

假设你的XP操作系统上有两个用户帐号:一个每天都使用的帐号,设置为限制用户(Limited User),另一个帐号设置在管理员组(Administrator Group),用作系统维护。你的电脑放在一个安全的地方,你是唯一可以物理上接触这台机器的人。下面两种选择,哪种更安全呢?

  • 你给管理员账户设置一个空密码;
  • 你为管理员账户设置了一个15位字符的强密码,使用随即生成的字符串,数字和符号。

你相不相信,空密码在很大程度上提供了更多的保护。因为在Windows XP操作系统中引入的加强安全机制,空密码的账户只能被用作直接登陆,要么在欢迎界面或者Windows的登陆对话框。你无法通过远程桌面登陆没有密码的账户,你也无法使用Run As功能来进入账户。想要入侵你机器的攻击者也无法通过网络获取管理员访问权限。

但是注意了,这个办法不是适合于每个人的。别在移动笔记本上使用这个办法(因为你的电脑一旦离开你,谁都可以看你里面的机密资料了),也别在加入Windows域的电脑上设置空密码,或者你真的需要远程桌面访问也别用这个办法。

但是这个机制对于家用电脑真的是非常好,特别是给老人和小孩用,再合适不过了,既简单又安全。

Original Post By Ed Bott

2006信息安全审计、控制与治理圆桌会议

昨天在上海的城市规划馆市府发言厅举办了Future S中国IT管理论坛R8,主题就是Control,Audit和Governance。与会的有IBM,AVOCENT,SYMANTEC,JUNIPER,BEARPOINT和DELOITTE的嘉宾,以及上海市信息中心的主任。

  市信息中心主任致开幕词

  各位业界的专家坐在一起讨论SOX法案对CSO的启示

一整天的演讲,除了Avocent公司介绍KVM产品和主题没有多大关系,有商业广告的嫌疑,其他各厂商的演讲都极力避免产品的介绍,公司的介绍,而更多的是对信息安全的讨论。

Juniper的中国区市场经理的讲演Slide竟然和前天下午在锦沧文华的Roadshow上的产品介绍一摸一样,不过由他来讲,却换作另一个角度,完全的信息安全理念的宣传,不参杂产品介绍的内容,实在难得,令人佩服。

相比之下,Symantec的产品专家就显得经验明显不足,话语没有说服力,几乎可以忽略不计。

IBM的安全顾问则显示出大公司的气魄和长期从事安全顾问工作的丰富经验,给听众带来比较多的经验的分享,思路清晰,表达明确,还得到了最佳人气奖。

同样的,毕博咨询和德勤作为专业的审计咨询公司,面对这种场合,可以说是侃侃而谈,而且德勤的合伙人对SOX以及相关的法律规章制度的了解,让人深感佩服。

会议讨论的主题就是SOX法案对企业的影响,而我也从此次圆桌会议更深切的领会和理解了SOX法案的内涵,以及如何比较好的来进行实践,满足SOX法案的要求。

我个人认为最深刻的就是要解决IT部门和企业业务部门的关系。到底是IT部门仅仅作为服务基础部门受制于财务销售等业务部门,还是IT部门凌驾于各业务部门之上,对各业务部门的信息使用指手画脚?IT部门的地位和重要性不言而喻,但是要真正做到IT有效的成为企业生存的核心,需要公司的最高层的认可和重视,这样IT部门才能够成为企业对于IT决策的实施部门,而不是被动的日常维护部门。

这样的高层对话和讨论对于中国的信息安全发展有非常好的指引作用。参加会议的有很多国有企业,垄断企业的IT高层,对他们进行洗脑和灌输,不仅可以让他们转变陈旧的思想,也可以加快信息安全在国内的发展。

Cisco VPN 集中器存在IKE资源耗尽型DOS攻击威胁

http://www.nta-monitor.com/posts/2006/07/cisco-concentrator-dos.html

概述

NTA Monitor 在Cisco VPN 3000系列集中器产品中发现拒绝服务攻击的漏洞。这个漏洞影响IKE协议协商的第一阶段。UDP或者TCP传输的Main模式或者Aggressive模式都受到影响。

利用这个漏洞,攻击者可以发送大量IKE请求使得VPN集中器的IKE资源耗尽达,这会阻止其他正常客户无法连接VPN或者使交换密钥失败甚至无法继续使用,以达到DOS目的。这个攻击不需要高带宽,区区一个攻击者就可以攻陷多个VPN集中器。这个漏洞背后的机制和著名的TCP SYN FLOOD漏洞是类似的。

漏洞细节

这个漏洞允许攻击者向远程的VPN集中器发起大量新的IKE session,并快于集中器队列中这些无效session超时的速度,使得VPN集中器的队列越积越多并且资源耗尽。

这个攻击通过发送IKE阶段一数据包可以接受的一种传输格式。不需要合法的身份就可以攻击此漏洞,因为这个漏洞发送在身份认证之前。这漏洞同时影响Main模式和Aggressive模式,包括upd和tcp封装的ike协议。

为了攻击这个漏洞,攻击者需要以超过VPN集中器IKE session超时的速率发送IKE数据包。测试者发现目标集中器一般在每秒2个包的速率就开始受到影响了,当速度达到每秒10个包的时候设备就不可用了。以Main模式最小的数据包来计算,单个传输112字节,每秒十个包相当于9kbps。

 VPN集中器在这些攻击数据包持续攻击的情况下无法继续处理IKE的请求,但是一旦攻击数据包停止,集中器就会回归到正常状态并处理列队中残留的会话请求。

同时,不太可能阻止外部向VPN集中器发起的IKE服务连接,因为远程的ipsec访问需要。IKE通常使用Udp传输协议,攻击者可以伪造数据包的源ip来躲过ip地址过滤。而且,IDS/IPS系统也可能很难检测到此类攻击,因为这些数据包都是合法的IKE数据包。

攻击症状是目标集中器一旦协商堆栈被挤满就不再响应IKE请求。这就意味着新的客户端将无法连接,第一阶段的密钥重协商将会失败。还不知道第二阶段的密钥协商是否会受到影响。已经建立的VPN隧道上跑的流量不会受到影响,除非它们再次协商密钥。

Cisco的反映

http://www.cisco.com/en/US/tech/tk583/tk372/tsd_technology_security_response09186a00806f33d4.html

现在仍然没有什么好的解决办法。

评论

这个漏洞不仅仅是Cisco VPN设备一家的产品问题,这个漏洞很可能影响到所有使用IKE version1标准的所有VPN产品。这个漏洞是属于协议类型的缺陷,类似于TCP的SYN Flood弱点一样。但是这个攻击这个漏洞比SYN flood更容易实现,而不像SYN Flood需要大量的数据包和带宽占用,仅用一点点流量就可以对提供VPN服务的设备造成致命性的DOS攻击。在目前没有什么很好的解决办法的情况下,是不是各VPN解决提供商能够考虑将使用的IKE协议升级到高版本?也许DOS和DDOS将一直伴随着互联网发展下去,永远是个让所有人头疼的问题,也是让安全业界得以生存的因素吧。