文档结构  
翻译进度:73%     翻译赏金:0 元 (?)    ¥ 我要打赏

最近,关于安全的新闻不断,系统被攻击、信息泄露,以及身份被盗。静力触探测试人员和安全领域的专家比以往多,使人们想知道问题到底出现在哪。

我认为有一个问题是软件开发界缺乏安全的心态。基本上所有安全问题都源于一种心态,“先写代码,安全补丁稍后再考虑”。

这种心态需要改变。

保持安全心态

但“安全心态”究竟是什么?

一个安全的心态涉及到考虑恶意入侵的情况。这是一种你做每件事都要考虑潜在安全问题的心态。问题不应该是“人们会是否会试图攻击呢?”,而是,“如果被黑客攻击会出现什么情况呢?”

安全不是绝对的。相反,它构成了一系列的等级。我们必须为我们所从事的每一个项目选择适当的安全级别。

例如,在你的Flash版本的Pong实施双因素认证显然是多余的,但不经过登录认证即可进入网站就是你的疏忽。

比较重要的是要有意识地知道你所做的项目适合哪种安全级别。你可以用以下几个基本问题来确定:

  1. “我正在处理的是什么数据?“请记住,你必须知道的基础是,客户端数据应该始终保密,甚至是一些很简单的东西,如电子邮件地址。
  2. “还有什么其他系统可以访问?”很多黑客通过看似无关紧要的系统漏洞入侵。这方面的一个典型的例子是许多简单的WordPress插件,已被用来获得网站和服务器的访问权限。
  3. “我的安全措施对用户做了假设吗?“在一个用户密码强大的世界,解析远比它更重要。我们不能假设用户的密码质量,因为比起最终用户,供应商有更多的安全责任。
  4. “这个项目依赖的第三方资源是什么?“了解您依赖的资源可以预防第三方软件的安全漏洞。

提出想这样的基本问题就是安全思维所有的内容。这就像往回走几步然后试着从另一个角度看问题一样简单。这不用花费太多时间,而且会在将来的路途中避免很多麻烦。 

嵌入式软件的安全问题

嵌入式软件是巨大忽略安全问题的领域之一。一个程序员在为银行编写登陆协议时想都不敢想忽视安全性,但是同一个程序员在为蓝牙键盘编译代码时却可能根本不会去考虑安全性。

我的妻子是一个一型糖尿病患者并且长期依赖于胰岛素泵。为你们中不太了解胰岛泵的人解释一下,这是一个小的设备,始终靠着一个管子和插在她皮肤中的针管和我妻子连在一起。这个泵储存着大量胰岛素,一整天为我妻子输送她赖以生存的激素。它有一个蓝牙功能帮助我妻子通过血糖仪控制胰岛素剂量。

第 3 段(可获 2.23 积分)

那么问题来了,如果开发者不具有安全意识,为所有泵上的蓝牙连接设置同样的默认密码。或者更加糟糕,如果这个连接并没有被加密而且根本不需要密码?

他们或许这样想,“谁会想要入侵一个胰岛素泵?”答案是,任何一个喜欢挑战的人。

回看历史,你会发现人们曾经入侵那些有“电脑”的电话公司,例如那些让人们拨打免费电话的个人电脑。人们会这样做因为他们能做到。我们已经在汽车行业中见证了这样的问题。

第 4 段(可获 1.34 积分)

比如汽车的自动平行泊车功能提供了一个漏洞,使黑客能够控制一个2015年的吉普车的方向盘。

开发者在编写这些嵌入式功能时不具备安全意识,它的结果是克莱斯勒的付出巨大的代价召回这些车。

漠视安全的原因是什么呢?

教育

我认为这个问题的主要原因之一,可以追溯到大学的计算机科学课程。

没有为学生提供足够的安全类课程,这些课程不仅要上,还要强制性与软件开发行业的学生的学位挂钩。具体教学生常见漏洞如数据库注入,这些都是有益的。但是,在我们的教育系统中,更重要的是教学生“像黑客一样思考”。 这就像谚语所说的“授人以鱼不如授人以渔”一样。通过教育他们要具备安全意识和心态,来更好地培养下一代开发者。

第 5 段(可获 2.33 积分)

我也会鼓励所有的计算机科学专业的学生参与缺陷奖励项目,因为这能给他们一些现实经验,将有助于下一代的程序员从安全的角度考虑问题,在生产前预防问题。如同一句老话所说的:“一磅补丁不如一盎安全意识”。

投资安全的责任

实现安全的另一个阻碍在于公司本身。

很多企业没有看到投资安全资源,将安全置于首位的价值。我曾在一个公司做了约一年半Helpdesk技术工作,那时候我通过写一些软件来使工作开展的更容易些,公司有分布在35个地区的1000多台机器需要管理,而仅有一个五名helpdesk技术人员的小团队。

第 6 段(可获 1.89 积分)

如果他们需要进行进行公司范围的机器改变,就要我们五个人逐个远程进入这些机器,来实现变更。我写的补丁部署软件,让我们能通过上传脚本到服务器,来部署这些机器变更程序。

在我做这些的时候,我的代码从来没有被另一个人审查过。虽然我感激这样的信任,但是这其中存在滥用或错误的可能性非常高。而他们从来没有质疑我的系统的安全性。

经过几次的版本上线运行,我意识到如果FTP服务器被入侵,攻击者可以上传自己的脚本并在这些机器上运行(其中许多会被用来作为传播式销售点)。因此我自己着手实现了对文件的非对称认证,这样只有提交私人密钥的脚本才能被执行。那家公司很幸运,因为我没有滥用他们的信任!

第 7 段(可获 2.05 积分)

然而,要实现这种安全措施,我不得不寻找额外的时间,因为他们不想在种安全措施上“浪费”时间。在这种情况下,安全意识的,不是程序员而是管理层。

这就是为什么一个公司自上而下各个阶层具备安全心态如此重要的原因,有些人只做要求要做的事。在一些工作场合,主动提出提高安全性能会让你陷入困境。

这么多的管理者和企业主没有看到的是,把安全放在首位,能建立可靠性和赢取客户的信任,进而提高利润。由于信用卡违约,不仅是损失超过1亿6000万美元,更重要的是失去了品牌的信誉。

第 8 段(可获 1.64 积分)

While not all managers and owners can be taught all of the technical details of modern security, the principles of being security minded and the overall importance of security can and should be taught to anyone in a leadership role of a business.

Early Is Better – Preempt Patching

There are many important things to consider when beginning a project. It is our job to make security one of those considerations. Patching should be viewed as a last resort, rather than an excuse to neglect security during the initial phases of the project.

Ignoring security adds just as much (if not more) to your technical debt as unfixed bugs. Very often, customers simply miss needed patches altogether. Furthermore, patches also have the potential to break other features, as security patches need to be written and deployed quickly, which makes testing difficult.

第 9 段(可获 1.75 积分)

Respecting the End User

At the end of day, it all comes down to how much we respect our users. It is easy to become jaded about users, but they are the ones who ultimately keep us employed. They are the reason for our existence as software developers, and as such their security and user needs should always come first on our to-do list.

It is impossible to prevent all security breaches. However, it is up to us as developers to start pushing our employers and educators to recognize the importance of a security mindset from the start.

I believe that if we work together to put the user first and prioritize security from the top down, we will greatly reduce the instances we see on the news of major hacks that hurt companies and customers alike.

第 10 段(可获 1.71 积分)

So the next time you are working on some mundane and seemingly unimportant piece of code remember, security starts with you.

Resources

For up-to-date security news, check out Krebs on security. If you are interested in bug bounty programs,HackerOne is a great place to start. You can also search the National Vulnerability Database to find the latest security exploits. Finally, 24 Deadly Sins of Software Security by Michael Howard, David LeBlanc, and John Viega covers many of the most common security issues in software development.

第 11 段(可获 1.08 积分)

文章评论