Web 2.0技术趋势与新兴资安议题漫谈

本文作者:admin       点击: 2009-12-14 00:00
前言:

当影片、相簿、音乐、软件即服务(SaaS:Software as a Service)将Web 1.0消逝的人潮重新带回因特网时,Web 2.0技术可协助SaaS服务业者将因特网作为运算平台,例如物流运筹、电话营销、Web网络服务等智能型生活应用,由服务业者提供软、硬设备与网络平台的维运,企业用户不须投入庞大的建置费用与系统维护成本,只需透过浏览器即可租用信息软件服务。以下概述Web 2.0相关技术与资安议题:

Web 2.0概述

Web 2.0技术可实现在传递信息的服务导向架构(SOA)上,主要环境包含开放式程序撰写平台、用户接口与商业逻辑分离之应用平台,及跨平台/浏览器之产业标准接口(如SOAP、WSDL、WS-Security等接口),而Web服务业者透过Requestor、Registry、Provider等3种使用模式,将应用软件设计成许多低耦合的互动服务模块,提供持续参与贡献的使用者,可以像堆乐高 LEGO 积木一样,随需要以标准建材方式组合成单一逻辑系统,形成丰富内容的交互式应用网站,例如Facebook联谊模式等动态网站。

如图1 Web 2.0应用层架构,浏览器成为Client端,而Web服务业者后端应用数据中心成为Server端,存放着众多私人或企业数据,各种Web应用则以API形式供网络上存取使用,这些API属于使用者自我描述、无状态、可执行个别工作单元的模块,透过RPC之远程过程调用,或REST之表达状态传递等协议,提供各种Web 2.0服务。

Web 2.0技术趋势与资安挑战

如图2之整合式Web 2.0技术领域所示,Web 2.0开放网络环境可混合客户端及伺服端程序代码,以融入消费者及企业员工生活提供生动有趣应用,但却隐藏着比传统Web 1.0更严重的安全问题,使得安全漏洞更容易被挖掘,并引进全新的攻击模式,以下将针对Web 2.0技术趋势探讨相关的资安议题。

(1) 由客户端产生之内容vs前后端之信任问题
现代化Web 2.0应用,如部落格或相片分享服务等,由后端数据交换协议负责大量数据处理工作,可以使网页呈现有如桌面的感觉。如RoR(Ruby on Rails)的伺服端脚本语言,用法简单并容易与客户端JavaScript整合,可处理用户请求并回传数据给浏览器,或传给经由JavaScript启动的后端通道呼叫器,但客户端常忽略因特网联机的安全性,而伺服端也存在验证用户输入数据的安全漏洞,加上目前业界仍缺乏完整的浏览器安全政策的协议,即使现存的相同来源政策(same origin policy)也只能实现部分安全需求。

(2) 混搭之Web服务vs. 默认之外来程序
如个人化首页,Web 2.0系统提供接口允许其他Web 2.0系统可互通并分享开放的资源,产生所谓混搭(mashups),开发者可利用具有XML共通性API的Web服务,自由混合网络上不同信息,而创造出有如单一应用的聚合服务内容。
为易于创造混搭,Web 2.0工具开发商积极地发展各种技术,以绕过既有浏览器安全限制,造成应用服务下载不明功能及安全性的外来HTML及JavaScript。由于资源来自许多RSS(Real Simple Syndications)、Atom及Plug-in机制,背后所涉及的庞大流程管理已远超过用户所能看见的范围,默认源自外来网站的Script,将危及使用者的全程联机并泄露机敏信息。

(3) 客户端JavaScript vs.安全缺陷架构
如Google GWT的JavaScript链接库架构,可自动化建构更多动态效果及通讯能力,以提供诸如行事历、动态下拉式选单等用户接口,它们也会自动化设定JSON或XML联机之程序,但有下载程序代码重新定义语言功能的安全漏洞。
又如AJAX架构包含大量应用执行所需信息,可随时以.js档方式被使用者下载至浏览器,此客户端信息将方便黑客找出可攻击之漏洞,而有时AJAX亦可藉由代理器,提供可注入信息的内容撷取或字段列举方法,然后再将内容或域值传送至伺服端,因此更容易被发现可被攻击之漏洞。

Web 2.0安全漏洞

(1) 未充分认证控制
传统上,信息系统均假设仅有少数特权账号隶属于资深或有经验的用户,并在工作流程中会确认其他用户须被授权才能作系统变更动作。此假设在经常相信许多使用者的Web 2.0应用环境中失效,而导致许多可被攻击之弱点:例如脆弱性密码、未充分之反暴力浏览(Anti-Brute Force)控制、明文密码、一次性密码等弱点。

(2) 跨站脚本攻击(XSS)
在Web 1.0极为流行之XSS攻击,在许多使用者所创建的Web 2.0架构下更利于实现,例如社交网站、部落格等。使得黑客在客户端可植入不正常之Script,透过恶意连结即可诱骗没有疑心的使用者从浏览器访问某特定网页。而Web 2.0使用者间整合式互动应用特色,使得XSS应用缺陷从一个使用者传播至另一个使用者之可能性更高,MySpace.com之Samy蠕虫即为一明显案例。

(3) Cross-Site Request Forgery(CSRF)
此弱点发生于受害者访问外表无害的恶意网站时,恶意网站对另一个经由受害者授权网站发出请求,而代表受害者执行某些作业。由于Web 2.0使用AJAX,跨领域功能使CSRF攻击威力大增,即使XHR特地避开跨领域互动,在某些弹性机制(如Flash)下,仍有方法支持跨领域功能,因而用户之单纯页面点击行为,即可允许黑客或钓鱼者执行跨领域攻击,例如点击一个部落格的故事,事实上可能减少你的银行账户1万元美金。虽然相同来源政策(same origin policy)可限制未验证之CSRF恶意代码发行请求,然而某些Web 2.0环境(例如个人化首页)并未强制实施相同来源政策。
(4) AJAX安全威胁

如图3所示,AJAX(Asynchronous JavaScript XML)提供丰富之画面设计方式,并使用各种数据串流,如JSON、Array、JS-Object等,执行时无需整个HTTP页面更新,仅由背景端异步处理即可快速响应用户之数据请求。AJAX之JavaScript能与后端资源互通,并可利用混搭(mashups)应用之效果。如不了解所使用之数据串流,将会产生严重的资安影响如下:
A.AJAX例程之客户端验证

Web 2.0应用常使用AJAX为客户端执行验证,但因缺乏伺服端验证,使得黑客可利用SQL、LDAP等注入方式绕过AJAX验证,并对应用程序直接执行POST或GET请求,而入侵一个Web应用的主要资源。
B.RSS/Atom注入攻击

RSS供应(feed)系一种在入口网站及Web应用程序间分享信息的共通方法,这些供应允许使用者无需访问网站,而可取得内容表头及主体文字等网站内容摘要,由于应用未考虑使用来自第三者内容的安全漏洞,使得有心者可注入JavaScript文字至RSS供应中,以产生在客户端浏览器之攻击,因此当RSS及ATOM供应成为Web应用之整体组成部分后,在将数据送进客户端前过滤伺服端某些文字是很重要的。

(5) XML服务安全威胁
如图4所示,XML服务之安全威胁包括信息被泄漏、欺骗,或服务被破坏、篡夺等威胁,而风险因素来源有二种:分布式系统风险及信息风险;在分布式系统架构下,网络防火墙不易侦测到来自开放网络端口之XML服务攻击威胁,而在服务请求及供应端中间交换的XML文件及信息中,由于流经许多不同的安全区域的中间节点,基于资安政策、地理、技术及组织网域的差异性,亦容易遭到各种攻击风险,兹描述相关Web 2.0服务之威胁如下:

A.XML污染
现今共通格式数据诸如MP3文件及微软Word文件已可转成XML方式传送,因而导致XML网络流量大增;此外,SOAP信封及WSDL档所夹带之嵌入式宏及档案,亦增加Web服务信息交换的风险。因此在伺服端及浏览器间传递XML流量之Web 2.0应用程序,其所接收来自AJAX客户端之XML区块最终可能被污染。黑客有时利用递归的数据区段对伺服端造成拒绝服务的攻击,有时制作变形的XML文件,破坏依赖于伺服端剖析机制的逻辑,而XML纲要污染系另一种可改变执行流向之XML污染攻击,此漏洞可帮助黑客攻击机密信息。

B.WSDL扫描及列举
WSDL(Web服务定义语言)系一种Web服务之接口,由于WSDL文件包含所有消费者可用的操作,黑客可用不同的信息请求模式去执行所有的操作,直到发现一个漏洞;此种足迹探测法在不良的程序撰写实作时极为有效。开启不必要的功能将导致Web服务潜在的灾难,因此保护WSDL档案或对其提供有限的存取能力是很重要的。

C.Web服务之路由
Web服务安全协议具有WS路由服务,允许SOAP信息以特定顺序从各个不同节点行进,通常SOAP信息已经过加密,但任一中间节点若遭到破解,黑客即可窜改SOAP信息。

D.SOAP之参数操控
Web服务接收来自SOAP信息之信息与变量,这些变量有可能被操控,如攻击者对SOAP信息中一个节点展开操控,并尝试不同的注入─如SAL,LDAP,XPATH,command shell等,即可掌握内部机器;不正确或不充分的Web服务节点认证将使得Web服务应用暴露在攻击中。

E.SOAP信息之XPATH注入
XPATH系一种查询XML文件的语言,Web应用接收大量XML文件,并从客户端取得输入数据形成XPATH叙述句,这些程序代码区段如果被XPTH注入攻击成功,则黑客可以绕过认证机制,或导致机密信息泄漏,因此在传递数据值给XPATH叙述句前提供适当的输入验证是极其必要的。

(6) RIA客户端之二进制操控威胁
RIA(Rich Internet Applications)使用丰富的UI特效,例如以Flash、ActiveX控制组件或小程序作为Web应用的主要接口。此种架构衍生许多安全议题,主要议题之ㄧ为 session管理,因其在浏览器执行并分享相同的session,同时,由于整个二进制组件被下载至客户端,黑客可能用逆向工程去破解二进制元文件并反组译程序代码,此后这些二进制组件可能被修改以绕过程序代码中一些认证逻辑。

Web 2.0威胁管理对策

(1) AJAX保护机制
AJAX保护机制类似传统Web应用之保护机制,包括:与数据库互动时常态性使用参数化查询、伺服端产出之所有响应须以HTML编码后再输出、使用“innerText”属性代替“innerHtml”、避免在Ajax呼叫中置放机密信息,以及选择适合之数据结构与平台等机制。

(2) 输入验证
避免只有客户端之验证,需验证所有经由客户端及伺服端之输入处理,例如验证HTTP表头、cookie、URL参数、POST数据及传送至伺服端之查询字符串,严格之验证检查需包含用户输入数据型态、长度及格式。

(3) 客户端程序代码安全
保护机制包括:不要部署商业逻辑组件在客户端应用系统中、过滤掉不可信任之第三方外来程序、避免执行跨网段之向后端呼叫、在信息处理前即先在浏览器端执行过滤,以及保护诸如document.write()之客户端呼叫等机制。

(4) JSON安全
以专为处理JSON数据而非Java Script的新parseJSON()函数,作为较安全替代eval之选项。

(5) SOAP过滤与WSDL强化机制
一般的防火墙或在HTTP层之内容过滤均无法防御Web服务之攻击,须要在SOAP层之过滤与监督,尤以ISAPI层过滤为基本要素,而WSDL系资料主要来源,务必不能有任何泄露,包括程序设计时只提供必要之函数,以及仅能经由SSL启动等强化机制。

(6) 认证授权与安全程序开发机制
保护机制包括:系统开发者须执行WSDL访问控制、使用SAML、WS-Security凭证、分析凭证、在存取前执行SOAP及XML过滤,以及实作错误程序代码管理、例外管理,输入验证、SQL整合之良好程序开发机制。
(7) 使用良好的XML剖析器(Parser)

XML剖析器分为两种:一种为一般浏览器均采用的以树为基础的剖析器(Tree-based Parser)或称为DOM 剖析器,另一种为以事件为基础的剖析器(Event-based Parser)或称为SAX剖析器。良好的XML剖析器不但可以避免系统间数据交换时所发生的数据错误,并可提高处理效能。

Web 2.0与云端软件服务
  
如图5所示,近年来由于某些Web 2.0服务数据量太过庞大,无法用单一Server在合理时间内完成所需工作(例如提供全世界地图数据查询服务之Google Map),因而网格运算或平行分布式处理技术随之兴起,以便将可平行处理的工作分布远程服务器完成,自此SOA服务导向架构即添加了可扩充性及网格运算能力,其后端技术对消费者而言是透通的,形成所谓云端软件服务模式。

Web 2.0基于SOA服务导向架构而延伸其应用至云端软件服务(SaaS)后,由于某些大型云端供货商所面对的资安议题,比每日自行营运IT系统的组织所看到的更复杂,因而可能拥有更好的威胁掌握度,但本文中所描述之安全议题大多数仍存在于云端软件服务(SaaS)中,因此企业或组织寻求云端软件服务商时,不论其是否拥有资安证照,仍然要验证他们在Web 2.0相关的服务流程,是否有考虑到本文所描述的资安议题。

结语

Web 2.0不仅是技术组合,同时也是新型消费者行为与服务商营运模式之组合,此多种元素的融合带给黑客无限的机会,以实行基于有趣或牟利的在线攻击行为,因此了解这些新型风险的涵义极其重要,尤其是当企业或组织考虑导入Web 2.0在专业及商业应用的时候。本文先概述Web 2.0之技术趋势,并基于开放式架构下消费者及服务商之互动行为,探讨一些极其重要的安全挑战与威胁管理对策,最后略述在SOA架构下,针对Web 2.0与云端软件服务(SaaS)之关联,提醒企业寻求云端软件服务商时,仍需考虑本文所提之Web 2.0资安风险管理事项,以推动商业营运在Web 2.0技术上安全的使用方式,使得企业可以获得新一代Web技术所带来的大量商机。