本文介绍关于PHP应用程序的漏洞以及攻击者如何利用PHP超全局变量来执行Web攻击的消息。并解释一下什么是PHP超全局变量及其带来的风险。
Nick Lewis(CISSP,GCWN))是一名信息安全分析师。他主要负责风险管理项目,并支持该项目的技术PCI法规遵从计划。2002年,Nick获得密歇根州立大学的电信理学硕士学位;2005年,又获得Norwich大学的信息安全保障理学硕士学位。在他09年加入目前的组织之前,Nick曾在波士顿儿童医院、哈佛医学院初级儿科教学医院,以及Internet2和密歇根州立大学工作。
问:我听到了很多关于PHP应用程序的漏洞以及攻击者如何利用PHP超全局变量来执行Web攻击的消息。您能否解释一下什么是PHP超全局变量及其带来的风险?
答:首先,我们来看一点背景知识:超文本预处理器(PHP)已经存在超过10年,它是迄今为止最重要的web应用程序编程语言。它的最初设计考虑了功能与易用性。然而,虽然PHP已经使用了这么多年,但它有着“劣迹斑斑”的安全漏洞记录。研究人员甚至创建了Hardened PHP项目来帮助企业保护应用程序和网页。
虽然我们已经发现并修复了很多PHP漏洞,但很多这些漏洞给许多常用web应用程序带来威胁,并需要web应用程序开发人员能够使用最新版本的PHP。其他编程语言(例如微软的Active Server Pages或者ASP)没有这些类型的漏洞,因而不需要开发人员或系统管理人员总是使用最新版本的语言来保持应用程序的安全性,减少了升级和培训的需求,从而降低了开发成本。无论使用什么编程语言,我们仍然需要使用安全开发实践。
在2000年8月,PHP超全局变量被引入来禁用PHP register global功能--因为它造成了PHP和web应用程序的重大安全问题。PHP超全局变量是PHP脚本中可用的内置变量,它可以存储数据,这些数据可以在整个脚本中使用。因为不安全的设计,这个弃用的功能广泛地被攻击者滥用。
应用程序安全供应商Imperva在其报告中描述了超全局变量带来的风险。其中一个风险是,超全局变量可能被输入恶意数据,随后这些数据可能被攻击者以不安全的方式被利用。
两个关键信息是,正如Imperva所指出,对于任何PHP应用程序,没有什么理由来提供超全局参数,要求应用程序提供这些参数的请求应该被阻止。为此,检查以确保你的web应用程序防火墙部署了规则来自动阻止这些请求,当这种事情发生时,应该发出警报,因为这很可能是有针对性攻击的标志。