案例 #1 味道闻起来很糟糕
![](/icons/95107dou2.gif)
两个多月以来
![](/icons/95107dou.gif)
数十万加仑
![](/icons/95107de.gif)
污水流到了澳大利亚
![](/icons/95107de.gif)
公园、河流以及
![](/icons/95107yi.gif)
家旅馆
![](/icons/95107de.gif)
地面上
![](/icons/95107dou.gif)
而无人知晓其原因
![](/icons/95107dou2.gif)
水生动植物不断地死亡
![](/icons/95107dou.gif)
而且有
![](/icons/95107yi.gif)
条小河中
![](/icons/95107de.gif)
水已经变黑了
![](/icons/95107dou2.gif)
2000 年 4 月 23 日
![](/icons/95107dou.gif)
当警方逮捕了
![](/icons/95107yi.gif)
名男子时才解开了这个谜团
![](/icons/95107dou.gif)
这名男子
![](/icons/95107yi.gif)
直在使用计算机和无线电设备对管理污水和饮用水
![](/icons/95107de.gif)
机器进行完全控制
![](/icons/95107dou2.gif)
他
![](/icons/95107de.gif)
动机是什么呢?对其审讯
![](/icons/95107de.gif)
口供表明他正试图获得
![](/icons/95107yi.gif)
份获利丰厚
![](/icons/95107de.gif)
咨询合同以解决他所造成
![](/icons/95107de.gif)
问题
![](/icons/95107dou2.gif)
事实原本还要糟糕得多
案例 #2 有
![](/icons/95107yi.gif)
个小偷(只知道他叫“Maxus”)从在线音乐公司 CD Universe 偷了 35 万个信用卡号
![](/icons/95107dou.gif)
然后勒索 10 万美元赎金
![](/icons/95107dou2.gif)
当 CD Universe 拒绝支付赎金时
![](/icons/95107dou.gif)
Maxus 就公开张贴了这些信用卡号 - 这损害了 CD Universe
![](/icons/95107de.gif)
顾客并使这些顾客有合理
![](/icons/95107de.gif)
理由转而光顾其它商店
案例 #3 CIA 最近了解到奥萨马·本·拉登
![](/icons/95107de.gif)
基地恐怖分子组织对网络恐怖活动有着“非常浓厚
![](/icons/95107de.gif)
兴趣”
![](/icons/95107dou.gif)
这是人们先前所不相信
![](/icons/95107de.gif)
![](/icons/95107dou2.gif)
链接到基地组织
![](/icons/95107de.gif)
计算机都可以获得各种计算机“破解”工具
![](/icons/95107dou.gif)
旨在引起灾难性
![](/icons/95107de.gif)
破坏
它们正在攻击您![](/icons/95107de.gif)
- 您准备好了吗? 计算机攻击已成为
![](/icons/95107yi.gif)
个非常严重
![](/icons/95107de.gif)
问题
![](/icons/95107dou2.gif)
1997 年
![](/icons/95107dou.gif)
CERT/CC 报告发生了 2134 起计算机性事件
![](/icons/95107dou.gif)
并报告了 311 个截然区别
![](/icons/95107de.gif)
性漏洞;到 2002 年
![](/icons/95107dou.gif)
所报告
![](/icons/95107de.gif)
计算机安全性事件已上升至 82094 起
![](/icons/95107dou.gif)
而安全性漏洞则上升到 4129 个
![](/icons/95107dou2.gif)
计算机安全性协会(Computer Security Institute
![](/icons/95107dou.gif)
CSI)和旧金山联邦调查局(Federal Bureau of Investigation
![](/icons/95107dou.gif)
FBI)计算机入侵小组于 2003 年调查了 503 家大型公司和政府机构
![](/icons/95107dou.gif)
发现其中有 92%
![](/icons/95107de.gif)
被调查者都报告受到过攻击
![](/icons/95107dou2.gif)
这些被调查者中
![](/icons/95107dou.gif)
有 78% 确认他们
![](/icons/95107de.gif)
因特网连接经常受到攻击
![](/icons/95107dou.gif)
并有 36% 确认他们
![](/icons/95107de.gif)
内部系统经常受到攻击
![](/icons/95107dou2.gif)
有 75%
![](/icons/95107de.gif)
被调查者承认他们受到了经济损失
![](/icons/95107dou.gif)
尽管只有 47%
![](/icons/95107de.gif)
被调查者可以确定他们损失
![](/icons/95107de.gif)
具体数目;但这些可以确定具体数目
![](/icons/95107de.gif)
组织
![](/icons/95107de.gif)
损失超过了 2 亿美元
攻击持续升温
![](/icons/95107de.gif)
原因有许多
![](/icons/95107dou2.gif)
计算机在不断地联网
![](/icons/95107dou.gif)
这使攻击者能比较容易地攻击世界范围内任何联网
![](/icons/95107de.gif)
计算机
![](/icons/95107dou.gif)
而不会有什么风险
![](/icons/95107dou2.gif)
计算机已经非常普及;它们现在控制着比较多
![](/icons/95107de.gif)
具有价值
![](/icons/95107de.gif)
东西(这使它们值得进行攻击)
![](/icons/95107dou2.gif)
过去
![](/icons/95107dou.gif)
顾客十分愿意购买不安全
![](/icons/95107de.gif)
软件Software
![](/icons/95107dou.gif)
所以根本没人愿意出钱开发安全
![](/icons/95107de.gif)
软件Software
电子世界现在是
![](/icons/95107yi.gif)
个危险程度更加高
![](/icons/95107de.gif)
地方
![](/icons/95107dou2.gif)
今天
![](/icons/95107dou.gif)
我们要求几乎所有
![](/icons/95107de.gif)
应用
![](/icons/95107chengxu.gif)
都是安全
![](/icons/95107de.gif)
应用
![](/icons/95107chengxu.gif)
![](/icons/95107dou2.gif)
例如
![](/icons/95107dou.gif)
实际上我们要求每个 Web 应用
![](/icons/95107chengxu.gif)
都是安全
![](/icons/95107de.gif)
应用
![](/icons/95107chengxu.gif)
![](/icons/95107dou.gif)
![](/icons/95107yinwei.gif)
不可信
![](/icons/95107de.gif)
用户可能向它们发送数据
![](/icons/95107dou2.gif)
甚至那些显示或编辑本地文件
![](/icons/95107de.gif)
应用
![](/icons/95107chengxu.gif)
(如字处理器)都必须受到保护
![](/icons/95107dou.gif)
![](/icons/95107yinwei.gif)
有时用户将显示或编辑以电子邮件方式发送给他们
![](/icons/95107de.gif)
数据
如果您在开发软件Software
![](/icons/95107dou.gif)
那么您就是身处战场
![](/icons/95107dou.gif)
需要知道如何保护您自己
![](/icons/95107dou2.gif)
遗憾
![](/icons/95107de.gif)
是
![](/icons/95107dou.gif)
大多数软件Software开发人员从未知晓如何编写安全
![](/icons/95107de.gif)
应用
![](/icons/95107chengxu.gif)
本专栏将帮助您了解如何编写安全
![](/icons/95107de.gif)
应用
![](/icons/95107chengxu.gif)
![](/icons/95107dou2.gif)
学校里很少会教这类信息
![](/icons/95107dou.gif)
其它地方也不太会讲授这
![](/icons/95107yi.gif)
主题
![](/icons/95107dou2.gif)
如果您学习了本专栏
![](/icons/95107dou.gif)
那么您将能够保护您
![](/icons/95107de.gif)
![](/icons/95107chengxu.gif)
![](/icons/95107dou.gif)
避免当前所用
![](/icons/95107de.gif)
最常见
![](/icons/95107de.gif)
攻击
![](/icons/95107dou2.gif)
尽管我们主要讨论 Linux 操作系统(也称为 GNU/Linux)
![](/icons/95107dou.gif)
但是几乎所有
![](/icons/95107de.gif)
内容都适用于任何类 UNIX 系统
![](/icons/95107dou.gif)
而且其中
![](/icons/95107de.gif)
许多内容也适用于其它操作系统(象 Microsoft )
对于这第
![](/icons/95107yi.gif)
篇文章
![](/icons/95107dou.gif)
我将先介绍
![](/icons/95107yi.gif)
些基础知识:安全性术语、改变您
![](/icons/95107de.gif)
理念、自由/开放源码软件Software(Free-Libre/open source software
![](/icons/95107dou.gif)
FLOSS)
![](/icons/95107de.gif)
影响以及确定安全性需求
术语:这些词表示什么意思? 每
![](/icons/95107yi.gif)
领域都有其自己
![](/icons/95107de.gif)
术语
![](/icons/95107dou.gif)
而计算机安全性领域中
![](/icons/95107de.gif)
术语则有些杂乱无章
![](/icons/95107dou.gif)
其中充斥着首字母缩写词和易混淆
![](/icons/95107de.gif)
词
![](/icons/95107dou2.gif)
以下几个定义应该有所帮助:
攻击者(attacker)(也称为非法闯入者)是这样
![](/icons/95107de.gif)
人:他试图使
![](/icons/95107chengxu.gif)
或计算机做某些事情
![](/icons/95107dou.gif)
而这些事情是明确禁止做
![](/icons/95107de.gif)
![](/icons/95107dou.gif)
如为了获得或更改私有数据而闯入不属于他们
![](/icons/95107de.gif)
计算机
黑客(hacker)是计算机专家或计算机狂热者
![](/icons/95107dou2.gif)
并非所有攻击者都是黑客 - 有些攻击者根本不了解计算机
![](/icons/95107dou2.gif)
同样
![](/icons/95107dou.gif)
并非所有黑客都是攻击者 - 许多黑客编写保护您
![](/icons/95107de.gif)
![](/icons/95107chengxu.gif)
!媒体公司只关注那些攻击计算机系统
![](/icons/95107de.gif)
黑客
![](/icons/95107dou.gif)
而往往忽视那些计算机
![](/icons/95107de.gif)
保卫者
![](/icons/95107dou.gif)
所以有些人就使用术语“黑客”表示只进行攻击
![](/icons/95107de.gif)
黑客
![](/icons/95107dou2.gif)
但是
![](/icons/95107dou.gif)
如果您认为所有
![](/icons/95107de.gif)
黑客都是攻击者
![](/icons/95107dou.gif)
那么您在理解许多安全性文章时会碰到很多麻烦
![](/icons/95107dou.gif)
所以我将使用这里指出
![](/icons/95107de.gif)
定义
缺陷(flaw)是
![](/icons/95107chengxu.gif)
中
![](/icons/95107de.gif)
![](/icons/95107cuowu.gif)
![](/icons/95107dou.gif)
或是
![](/icons/95107chengxu.gif)
![](/icons/95107de.gif)
安装思路方法中
![](/icons/95107de.gif)
![](/icons/95107cuowu.gif)
![](/icons/95107dou2.gif)
并不是所有
![](/icons/95107de.gif)
缺陷都和安全性有关
安全性漏洞(vulnerability)就是
![](/icons/95107yi.gif)
个缺陷
![](/icons/95107dou.gif)
它使
![](/icons/95107chengxu.gif)
有可能无法满足其安全性需求
漏洞利用(exloit)是
![](/icons/95107yi.gif)
个揭示或利用安全性漏洞
![](/icons/95107de.gif)
![](/icons/95107chengxu.gif)
改变您
理念 在学习如何编写安全
![](/icons/95107de.gif)
软件Software时遇到
![](/icons/95107de.gif)
最大挑战是改变您对软件Software开发
![](/icons/95107de.gif)
观点
![](/icons/95107dou2.gif)
以下几点应该会有所帮助:
偏执狂是
![](/icons/95107yi.gif)
种优点
![](/icons/95107dou2.gif)
在自己进行调查研究的前不要相信任何事情
![](/icons/95107dou2.gif)
不要想当然地以为您
![](/icons/95107de.gif)
输入遵守您所依赖
![](/icons/95107de.gif)
规则;去检验它
![](/icons/95107dou2.gif)
不要忽略来自库
![](/icons/95107de.gif)
![](/icons/95107cuowu.gif)
报告;通常
![](/icons/95107dou.gif)
在遇到意想不到
![](/icons/95107de.gif)
![](/icons/95107cuowu.gif)
时
![](/icons/95107dou.gif)
您需要终止正在进行
![](/icons/95107de.gif)
处理
![](/icons/95107dou2.gif)
不要以为您
![](/icons/95107de.gif)
![](/icons/95107chengxu.gif)
没有
![](/icons/95107cuowu.gif)
;限制您
![](/icons/95107de.gif)
![](/icons/95107chengxu.gif)
能够完成
![](/icons/95107de.gif)
事情
![](/icons/95107dou.gif)
这样
![](/icons/95107cuowu.gif)
成为安全性缺陷
![](/icons/95107de.gif)
可能性就会比较少
![](/icons/95107yi.gif)
般
![](/icons/95107de.gif)
测试通常无法发现安全性缺陷
![](/icons/95107dou2.gif)
大多数测试思路方法都假定用户设法使用
![](/icons/95107chengxu.gif)
来帮助他们完成
![](/icons/95107yi.gif)
些工作
![](/icons/95107dou2.gif)
因此
![](/icons/95107dou.gif)
测试假定用户将以某种“随机”或“有用”
![](/icons/95107de.gif)
方式工作
![](/icons/95107dou.gif)
检查
![](/icons/95107chengxu.gif)
在“
![](/icons/95107yi.gif)
般”情况下或者在某些最大值下如何工作
![](/icons/95107dou2.gif)
和此相反
![](/icons/95107dou.gif)
安全性缺陷通常只出现在使用极其古怪
![](/icons/95107de.gif)
值
![](/icons/95107de.gif)
情况时
![](/icons/95107dou.gif)
传统
![](/icons/95107de.gif)
测试完全不会检查这样
![](/icons/95107de.gif)
值
![](/icons/95107dou2.gif)
有些开发人员会编写非常糟糕
![](/icons/95107de.gif)
代码
![](/icons/95107dou.gif)
然后希望通过测试它来进行纠正
![](/icons/95107dou2.gif)
这种思路方法根本不会产生安全
![](/icons/95107de.gif)
代码
![](/icons/95107dou.gif)
![](/icons/95107yinwei.gif)
您无法创建足够多
![](/icons/95107de.gif)
测试来涵盖攻击者能做到
![](/icons/95107de.gif)
所有稀奇古怪
![](/icons/95107de.gif)
事情
小玩意(象)和技术(象加密)是不够
![](/icons/95107de.gif)
从过去
![](/icons/95107de.gif)
失败确定和了解漏洞
![](/icons/95107dou2.gif)
事实证明几乎所有软件Software
![](/icons/95107de.gif)
安全性漏洞都是由相对较小
![](/icons/95107de.gif)
![](/icons/95107yi.gif)
组常见
![](/icons/95107cuowu.gif)
引起
![](/icons/95107de.gif)
![](/icons/95107dou2.gif)
如果您了解了那些是什么
![](/icons/95107cuowu.gif)
- 以及如何避免这样
![](/icons/95107de.gif)
![](/icons/95107cuowu.gif)
- 您
![](/icons/95107de.gif)
软件Software就会安全得多
![](/icons/95107dou2.gif)
事实上
![](/icons/95107dou.gif)
本专栏将集中讨论如何避免以前出现
![](/icons/95107de.gif)
常见
![](/icons/95107cuowu.gif)
![](/icons/95107dou.gif)
这样您就不会犯同样
![](/icons/95107de.gif)
![](/icons/95107cuowu.gif)
FLOSS 会使我们安全吗?
自由/开放源码软件Software
![](/icons/95107chengxu.gif)
是带有某种许可证
![](/icons/95107de.gif)
![](/icons/95107chengxu.gif)
![](/icons/95107dou.gif)
这样
![](/icons/95107de.gif)
许可证允许用户以任何目
![](/icons/95107de.gif)
自由地运行
![](/icons/95107chengxu.gif)
![](/icons/95107dou.gif)
自由地研究和修改
![](/icons/95107chengxu.gif)
以及自由地重新分发原始
![](/icons/95107chengxu.gif)
副本或修改过
![](/icons/95107de.gif)
![](/icons/95107chengxu.gif)
副本(而不必向以前
![](/icons/95107de.gif)
开发人员支付版税)
![](/icons/95107dou2.gif)
FLOSS
![](/icons/95107de.gif)
同义词包括开放源码软件Software(OSS)
![](/icons/95107dou.gif)
大写时是“自由软件Software(Free Software)”(FS)以及 OSS/FS
![](/icons/95107dou2.gif)
“自由软件Software”和“开放源码软件Software”可在本文中互换使用
![](/icons/95107dou.gif)
但是推荐使用“FLOSS”
![](/icons/95107dou.gif)
![](/icons/95107yinwei.gif)
它包含了这两个术语
![](/icons/95107dou2.gif)
典型
![](/icons/95107de.gif)
FLOSS
![](/icons/95107chengxu.gif)
都是由开发人员社区开发
![](/icons/95107de.gif)
![](/icons/95107dou.gif)
他们
![](/icons/95107yi.gif)
起工作并评审彼此
![](/icons/95107de.gif)
工作
![](/icons/95107dou2.gif)
Linux 内核是 FLOSS
![](/icons/95107dou.gif)
Apache Web 和许多其它
![](/icons/95107chengxu.gif)
也是 FLOSS;FLOSS 正逐渐在许多市场特殊领域流行起来
人们可以评审 FLOSS
![](/icons/95107chengxu.gif)
![](/icons/95107de.gif)
源代码
![](/icons/95107dou.gif)
这样会如何影响安全性存在着激烈辩论
![](/icons/95107dou2.gif)
由于受到大众所有可能
![](/icons/95107de.gif)
详细审查
![](/icons/95107dou.gif)
所以 FLOSS 会更安全吗?或者
![](/icons/95107dou.gif)
FLOSS 是否会更不安全
![](/icons/95107dou.gif)
![](/icons/95107yinwei.gif)
攻击者获得了更多
![](/icons/95107de.gif)
信息 - 这会使得进行对
![](/icons/95107chengxu.gif)
![](/icons/95107de.gif)
攻击更容易吗?
这些问题开始有了答案
![](/icons/95107dou.gif)
和象“FLOSS 总是比较安全
![](/icons/95107de.gif)
”这样
![](/icons/95107de.gif)
简单声明相比
![](/icons/95107dou.gif)
这些答案更为细致且更复杂
![](/icons/95107dou2.gif)
确实有事实证明 FLOSS 能比具有专利权
![](/icons/95107de.gif)
软件Software安全
![](/icons/95107dou2.gif)
例如
![](/icons/95107dou.gif)
据报告 FLOSS OpenBSD 操作系统
![](/icons/95107de.gif)
安全性漏洞比 Microsoft 少得多
![](/icons/95107dou2.gif)
但是有
![](/icons/95107yi.gif)
个合理
![](/icons/95107de.gif)
“反诉”:由于 Windows 用户比较多
![](/icons/95107dou.gif)
所以对 Windows
![](/icons/95107de.gif)
攻击就可能比较多
![](/icons/95107dou.gif)
这意味着更有可能发现 Windows
![](/icons/95107de.gif)
安全性漏洞
![](/icons/95107dou2.gif)
这就是比较
![](/icons/95107de.gif)
全部内容吗?很值得怀疑
![](/icons/95107dou.gif)
不过这也显示出作同等对比是多么困难
![](/icons/95107yi.gif)
个更佳
![](/icons/95107de.gif)
举例是 Apache Web :它比 Microsoft
![](/icons/95107de.gif)
具有专利权
![](/icons/95107de.gif)
IIS Web 服务器流行得多
![](/icons/95107dou.gif)
但是 Apache
![](/icons/95107de.gif)
严重安全性漏洞却比 IIS 少
![](/icons/95107dou2.gif)
请参阅我
![](/icons/95107de.gif)
论文“Why OSS/FS? Look at the Numbers”(在参考资料中)获取有关 FLOSS
![](/icons/95107de.gif)
更多统计信息
![](/icons/95107dou.gif)
包括安全性统计信息
还有
![](/icons/95107yi.gif)
点很清楚
![](/icons/95107dou.gif)
攻击者实际上并不需要源代码
![](/icons/95107dou2.gif)
只要研究可获得
![](/icons/95107de.gif)
所有 Microsoft Windows 漏洞利用就可以了!更重要
![](/icons/95107de.gif)
是
![](/icons/95107dou.gif)
如果攻击者需要源代码
![](/icons/95107dou.gif)
那么他们会使用反编译器
![](/icons/95107dou.gif)
来重新创建源代码
![](/icons/95107dou.gif)
这样重新创建
![](/icons/95107de.gif)
源代码对攻击目
![](/icons/95107de.gif)
而言足够了
但是答案也并非就是“FLOSS 总是比较安全
![](/icons/95107de.gif)
”
![](/icons/95107dou2.gif)
毕竟
![](/icons/95107dou.gif)
您可以将具有专利权
![](/icons/95107de.gif)
![](/icons/95107chengxu.gif)
![](/icons/95107de.gif)
许可证更改成 FLOSS
![](/icons/95107dou.gif)
而不更改其代码
![](/icons/95107dou.gif)
而它不会突然就变得更安全
![](/icons/95107dou2.gif)
相反
![](/icons/95107dou.gif)
有几个原因看来是使 FLOSS
![](/icons/95107chengxu.gif)
拥有良好
![](/icons/95107de.gif)
安全性所必不可少
![](/icons/95107de.gif)
:
必须多人真正地评审代码
![](/icons/95107dou2.gif)
有多种原因会减少进行评审
![](/icons/95107de.gif)
可能性
![](/icons/95107dou.gif)
如用于特殊领域或很少用到
![](/icons/95107de.gif)
产品(可能
![](/icons/95107de.gif)
评审者很少)、开发人员很少、使用罕见
![](/icons/95107de.gif)
计算机语言或实际上不是 FLOSS(如“共享源码”许可证)
![](/icons/95107dou2.gif)
如果每次代码更改都由许多开发人员进行检查
![](/icons/95107dou.gif)
这通常有助于安全性
至少某些开发和评审代码
![](/icons/95107de.gif)
人必须知道如何编写安全
![](/icons/95107de.gif)
![](/icons/95107chengxu.gif)
![](/icons/95107dou2.gif)
![](/icons/95107yi.gif)
个人可以帮助培训其他人
![](/icons/95107dou.gif)
但是您必须有
![](/icons/95107yi.gif)
个起点
![](/icons/95107yi.gif)
旦发现安全性漏洞
![](/icons/95107dou.gif)
需要快速地开展修补工作并将修补成果进行分发
简而言的
![](/icons/95107dou.gif)
![](/icons/95107chengxu.gif)
是否安全最重要
![](/icons/95107de.gif)
原因是 - 不管它是 FLOSS 还是具有专利权
![](/icons/95107de.gif)
- 其开发人员是否知道如何编写安全
![](/icons/95107de.gif)
![](/icons/95107chengxu.gif)
如果您需要安全
![](/icons/95107de.gif)
![](/icons/95107chengxu.gif)
![](/icons/95107dou.gif)
那么使用 FLOSS
![](/icons/95107chengxu.gif)
就相当合理 - 但您需要以某种方式评估它以确定它对于您
![](/icons/95107de.gif)
目
![](/icons/95107de.gif)
是否足够安全
确定您
安全性需求 在您可以确定
![](/icons/95107chengxu.gif)
是否
延伸阅读
最新评论