写点什么

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:252258
用户头像

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

关注

评论

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

克隆远端项目,idea 自动生成了一个.idea 文件夹,怎么办?

bug菌

git IDEA .gitignore 三周年连更

跨平台应用开发进阶(四十四)一文走近应用层抓包工具:Charles

No Silver Bullet

应用层 抓包分析 抓包工具 三周年连更

新技术加持下前端开发工程师的未来在哪里?| 社区征文

No Silver Bullet

前端开发 新技术 三周年征文

基于 RocketMQ Connect 构建数据流转处理平台

阿里巴巴云原生

阿里云 RocketMQ 云原生

华为云等保合规解决方案,助力企业轻松、省心、安全“上云”

秃头也爱科技

Vue3 watch 与 watchEffect

程序员海军

Vue Vue 3 watch 三周年连更

Exception和Error有什么区别吗 | 社区征文

共饮一杯无

Java Exception Error 三周年连更

Spider实战系列-爬取鬼吹灯小说

浅辄

案例分享 三周年连更

【Linux】之【网络】相关的命令及解析[ethtool、nload、nethogs、iftop、iptraf、ifstat]

A-刘晨阳

Linux 网络 三周年连更

助力企业网络安全建设,华为云等保合规解决方案值得拥有

路过的憨憨

华为云等保方案,轻松满足企业等保合规要求

IT科技苏辞

更专业、安全的过等保,华为云等保合规解决方案值得选择

IT科技苏辞

MySQL数据文件被误删,如何进行恢复?

架构精进之路

MySQL 数据库 三周年连更

布隆过滤器的设计之美,后端程序员一定要好好体会

程序员小毕

程序员 数据结构 面试 后端 布隆过滤器

云效AppStack--扫雷亲测

六月的雨在InfoQ

云效 AppStack 云效流水线 Flow 三周年连更

聊聊JavaScript和Scala的表达式 Expression

汪子熙

JavaScript scala 三周年连更

Mac怎么创建txt文件?如何设置新建txt的快捷键?

互联网搬砖工作者

termius使用ssh教程 【XShell的神器Termius】

互联网搬砖工作者

机器视觉公司,在玩一局玩不起的游戏

脑极体

CV

华为云等保方案,为企业上云保驾护航

科技说

华为云等保合规方案,助力企业最快30天过等保

科技说

连Hibernate技术都不清楚,你敢说你自己会ORM框架?

浅羽技术

Java hibernate 框架 ORM框架 三周年连更

一天吃透操作系统八股文

程序员大彬

面试 操作系统

2023移动云大会重磅官宣,云改“新三年”强势开局引期待?

ToB行业头条

华为云等保合规解决方案,助力企业高效过等保

秃头也爱科技

不愧是Github获赞78.9K的「LeetCode全彩版刷题小册」面面俱到,太全了

采菊东篱下

面试 算法 力扣

如何利用人工智能的语言模型创造价值和收益

派大星

ChatGPT

跨平台应用开发进阶(四十五)uni-app集成企微客服实战

No Silver Bullet

uni-app 项目实战 三周年连更

Go 也能实现 “继承”?

陈明勇

Go golang 继承 三周年连更

Meetup 直播预告|助力企业数字化转型,8 大微服务&容器开源实践亮点抢先看

阿里巴巴云原生

阿里云 开源 容器 微服务 云原生

在华为云构建多云跨云的容灾系统,真的很香

路过的憨憨

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