写点什么

Shellshock 漏洞证明是时候放弃 CGI 技术了

  • 2014-10-14
  • 本文字数:964 字

    阅读完需:约 3 分钟

最近,被类 UNIX 系统广泛使用的 Bash 软件曝出了一系列已经存在数十年的漏洞( Shellshock ),在业界引起了非常大的影响。不少 Linux 发行版本连夜发布了修复版本的 Bash,在服务器领域占有不少份额的 FreeBSD 和 NetBSD 已经默认关闭了引起漏洞的功能。InfoQ 也及时带来了关于 Shellshock 的详细报道

在这个漏洞的风波逐渐平息之余,不少业内人士也在思考,它为何波及如此之广,影响如此之大。 InfoWorld 的专栏作者 Andrew C. Oliver 在一篇文章中表达了自己看法,他认为CGI 技术的普及是个错误,正是因为CGI 技术的不合理之处,Shellshock 才有机可乘。

CGI 技术是 Web 技术刚兴起的时候发明的,它是最早的可以创建动态网页内容的技术之一。它会把一个 HTTP 请求转化为一次 shell 调用。而 Shellshock 的原理是利用了 Bash 在导入环境变量函数时候的漏洞,启动 Bash 的时候,它不但会导入这个函数,而且会误把函数定义后面的命令也执行一遍。在有些 CGI 脚本的设计中,数据是通过环境变量来传递的,这样就给了数据提供者利用 Shellshock 漏洞的机会。对此,Oliver 抱怨道:

为什么有人会认为,通过 HTTP 请求给一个陌生人访问 shell(哪怕是受限的)的机会是一个好主意呢?我不理解。

Oliver 把 CGI 技术比作“上了膛的武器”,程序员必须非常谨慎地使用它,写出优秀的脚本。但在现代的商业实践中,雇佣优秀程序员已经不是一个必选项,大量的廉价程序员很多时候也能合力完成工作。能写出考虑周全的 CGI 脚本的人越来越少,这也使得 CGI 技术更不合时宜了。

Oliver 甚至觉得,用 C 语言编写的动态网页程序都要比 CGI 好一些,因为避免 C 语言的缓冲溢出问题其实并不难,如果程序员不给自己挖坑,并且认真做好单元测试的话,问题不会太大。

编写水平糟糕的 CGI 脚本,确实是互联网上可利用漏洞最多的技术之一了。当然网络、计算机架构等也有可能存在漏洞,但是 CGI 从诞生之初就是一个设计错误,经历此次 Shellshock 风波,其弱点也再次暴露在公众面前。Oliver 也呼吁大家,逐步放弃 CGI 技术,“先移除那些暴露在公众访问之下,又需要非常仔细编写才能不出问题的脚本”。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-10-14 03:252155
用户头像

发布了 77 篇内容, 共 36.5 次阅读, 收获喜欢 26 次。

关注

评论

发布
暂无评论
发现更多内容

Apache RocketMQ ACL 2.0 全新升级

阿里巴巴云原生

阿里云 云原生 Apache RocketMQ

安全是最大的豪华!星纪元ET成功挑战31.9米空中坠落试验

Geek_2d6073

芯盾时代IAM,三种权限管理模型按需选择

芯盾时代

权限管理 iam 统一身份认证 统一身份管理平台 最小权限管理

Cheetah3D for mac(3D渲染建模软件)v8.1激活版

iMac小白

Cheetah3D注册机 Cheetah3D 8新功能 Cheetah3D8下载 Cheetah3D破解版

天上掉下个“星纪元ET”!首次挑战空中坠落试验高调秀肌肉

Geek_2d6073

Navicat Premium for Mac(多连接数据库管理工具)v16.3.4中文激活版

iMac小白

Navicat Premium 中文版 Navicat Premium 16下载 Navicat Premium16破解版

将“安全”进行到底!星纪元ET挑战TOP Safety空中坠落试验现场大公开

Geek_2d6073

开发欧冠体育赛事直播在线观看平台:时间与费用详解

软件开发-梦幻运营部

掌握高阶定位技巧:Xpath神功解析!

测吧(北京)科技有限公司

测试

Mitti for Mac v2.8永久激活版:视频编辑新选择,简单而强大

iMac小白

Mitti下载 Mitti激活版 Mitti for mac

深入学习和理解Django模板层:构建动态页面

快乐非自愿限量之名

django 框架

Invisor for Mac v3.24激活版 - 轻松管理您的Mac文件与文件夹

iMac小白

Invisor下载 Invisor for mac Invisor 破解版 Invisor激活版

2024-05-08:用go语言,给定一个由正整数组成的数组 nums, 找出数组中频率最高的元素, 然后计算该元素在数组中出现的总次数。 输入:nums = [1,2,2,3,1,4]。 输出:4。

福大大架构师每日一题

福大大架构师每日一题

一键自动化博客发布工具,用过的人都说好(oschina篇)

不在线第一只蜗牛

运维 自动化

程序员离不开的10款开发软件(必备)

伤感汤姆布利柏

CopyClip for Mac激活版 - 你的智能剪贴板管家

iMac小白

CopyClip下载 CopyClip激活版 CopyClip mac

程序员必备的8款工具软件,第5款简直绝了!

高端章鱼哥

当「软件研发」遇上 AI 大模型

阿里云云效

阿里云 云原生 通义灵码

当「软件研发」遇上 AI 大模型

阿里巴巴云原生

阿里云 云原生 通义灵码

单体到微服务架构的涅槃重生之路?

智在碧得

微服务 微服务架构 单体架构 单体项目 单体服务

TouchDesigner Pro for mac(可视化原型渲染设计)v2023.11760激活版

iMac小白

TouchDesigner下载 TouchDesigner激活版 TouchDesigner破解版

新一代智慧音视频平台,企业必备新基建

中关村科金

音视频 企业服务 大模型

Sermant在异地多活场景下的实践

EquatorCoco

数据库 异地多活

理论+实践,带你了解分布式训练

华为云开发者联盟

机器学习 华为云 华为云开发者联盟 大语言模型 企业号2024年5月PK榜

从代码到洞察:使用API接口深入分析商品详情数据

Noah

Infuse for Mac - 影音播放新高度,轻松驾驭您的媒体库

iMac小白

Infuse 中文 Infuse播放器 Infuse 下载

星纪元ET首次上演空中“自由落体”,极致安全实力无惧硬核极限挑战

Geek_2d6073

Shellshock漏洞证明是时候放弃CGI技术了_语言 & 开发_曹知渊_InfoQ精选文章