写点什么

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

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

关注

评论

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

大数据技术培训零基础学习怎么样

小谷哥

告别宽表,用DQL成就新一代BI

石臻臻的杂货铺

大数据 BI 10月月更

ShareSDK iOS端 UniversalLink生成最佳实践

MobTech袤博科技

ios universal link

C++中的多态

可口也可樂

c++ 多态 10月月更

在vue的v-for中,key为什么不能用index?

bb_xiaxia1998

Vue

「聚变」前端 & 客户端 | 第十七届 D2 终端技术大会,来了

阿里巴巴终端技术

阿里巴巴 前端 移动端 客户端 D2

如何实现车联网的灵活数据采集

EMQ映云科技

车联网 物联网 IoT 数据采集 10月月更

大数据技术培训零基础学习怎么样

小谷哥

TiKV 源码阅读三部曲(二)读流程

PingCAP

TiKV 源码解读

线下面授前端培训哪个机构好

小谷哥

C++中的继承

可口也可樂

c++ 继承 10月月更

前端高频vue面试题合集

bb_xiaxia1998

Vue

一文看懂Vue2和Vue3中设置404界面

木偶

Vue 前端 10月月更

IPv4 用完,如今花钱才能重新使用获取?

郑州埃文科技

IP

一图看懂融云「百幄」数智办公平台

融云 RongCloud

办公 数智化

react源码中的fiber架构

flyzz177

React

数据结构-二叉树中的操作

可口也可樂

数据结构 二叉树 10月月更

navicat 绿化版

源字节1号

软件开发 前端开发 后端开发 小程序开发

使用参数非参数和机器学习方法分析印度降雨变化,能给我国带来什么警示?

GPU算力

react源码中的hooks

flyzz177

React

使用实时3D渲染软件创建身临其境的数字体验

Finovy Cloud

3D渲染 云渲染 图像软件

浅谈OpenHarmony LiteOS-A内核之基础硬件——中断控制器GIC400

OpenHarmony开发者

OpenHarmony

Python多任务实现方式(一)-----多进程

木偶

Python 进程 10月月更

在北京web前端培训后好找工作

小谷哥

java培训和自学相比效果如何

小谷哥

每日一题之Vue数据劫持原理是什么?

bb_xiaxia1998

Vue

手写现代前端框架diff算法-前端面试进阶

helloworld1024fd

JavaScript

“科技与狠活”梗爆火,食品安全焦虑问题怎么破?

旺链科技

区块链 产业区块链 食品安全 企业号十月PK榜

java中HashMap的设计精妙在哪?

华为云开发者联盟

Java 开发 华为云 企业号十月 PK 榜

GaiaX开源解读 | 基于优酷业务特色的跨平台技术

阿里巴巴文娱技术

开源 移动开发 移动端开发

IM跨平台技术学习(六):网易云信基于Electron的IM消息全文检索技术实践

JackJiang

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