好了,网络运维人员。随着自动化工作全面展开,各类脚本也越写越多,现在该温馨提醒一下安全问题了。我说的不是可能由您负责部署和管理的防火墙、WAF或其他安全服务,而是踏上数字化转型之旅后将要编写的脚本和代码。
今天,我想提醒大家注意安全规则零。先来回顾一下:
安全规则零:绝不要信任用户输入。任何时候都不要。
这条规则很简单,对吧?
本应如此,但事实并非如此。安全事件接连不断。商业领域发生的安全事件都可以追溯到违反了安全规则零。这类违规行为在提供给开发者的示例代码中十分普遍。开发者在研究和学习新的语言与框架时会接触到这些代码。遗憾的是,这种做法也正逐渐蔓延到令人振奋的NetOps新领域。
请看证据A:

不过,公平地说,这个脚本至少还算厚道,会提醒您数据未经验证。这一点很重要,因为接下来该脚本会根据输入,对路由器配置执行各种远程操作。
我对此的不满在于,这段代码旨在帮助指导网络运维人员如何开始使用脚本来自动化管理生产网络设备,却只是简单提及数据验证,并未提供任何有关如何进行数据验证的实用信息。
如需了解有关在Python中验证IP地址的实用建议,请查看此Stack Overflow讨论。
可是,Lori,这只是编写脚本,而且我们做的也是CLI操作。说真的,这能有多大风险?
坏习惯很难改掉。
忽视安全规则零会带来两个问题。
首先,朋友,CLI的时代已屈指可数。API正在取代CLI,大多数自动化框架都开始采用RESTful API来配置和管理网络设备及服务。这意味着需要应用堆栈和解析器,也意味着设备可能遭到漏洞利用,因为其配置可通过可能存在漏洞的API进行更改。
为证明这并非夸大其词,请参阅这份关于广受讨论的Apache Struts漏洞的Cisco安全公告。普遍认为,将未经清理的输入传递给Struts框架会引发各种严重问题。
不过,如果潜在的漏洞利用风险仍不足以让您重视执行安全规则零,那么需要指出的是,未对输入进行清理所造成的影响范围可能远超单台设备。请看我们对2017年初Amazon S3服务中断事件的了解:
太平洋标准时间9:37,一名获得授权的S3团队成员按照既定操作手册执行了一条命令,原计划移除S3计费流程所用的一个S3子系统中的少量服务器。遗憾的是,该命令的一项输入有误,导致移除的服务器数量超出预期。
——Amazon S3在北弗吉尼亚(US-EAST-1)区域服务中断事件摘要
他输入脚本的数字远大于原本的预期。但脚本如果盲目接受操作人员输入的任何内容(无视安全规则零),最终难免会导致此类错误。让脚本执行一次简单的验证,虽然确实有些麻烦,但或许能避免此事在Twitter上持续热议一周多。
在网络和生产环境中,我们通常从授权的角度看待安全问题。Bob是否有权执行此操作?Alice能否执行此脚本?授权必不可少,至今仍至关重要。
<p>但随着我们加快(内部)数字化转型步伐,采用更多框架,并使用API和脚本大幅提升配置和管理的自动化程度,我们也必须从开发角度考虑安全问题。</p>
而这些规则中,首要的是安全第零法则:绝不要信任用户输入。任何时候都不要。
始终验证输入。这不仅能增强安全性,还能防止原本正常的自动化流程出现问题。
关于作者

Lori MacVittie是F5首席技术官办公室的杰出工程师兼首席技术布道师,在应用交付、自动化战略和基础设施领域拥有深厚的专业知识。无论是为AI智能体定义防护机制、剖析脆弱的多云架构,还是探索可扩展系统的极限,她都善于化繁为简。她在应用开发、IT架构以及网络和系统运维领域拥有30多年的行业经验。加入F5之前,她曾担任技术编辑,并因出色表现获得奖项。 MacVittie拥有计算机科学硕士学位,著述颇丰,出版作品涵盖安全、云和企业架构领域。她还热衷于桌面游戏和电子游戏,并且对奶酪有着毫不掩饰的鲜明见解。
Lori Mac Vittie 的更多博客文章相关博客文章
Thingbot正转变为攻击平台
Lori MacVittie重点介绍了F5 Labs对2018年1月至6月全球物联网设备攻击的研究,并指出了其中令人警醒的影响。物联网设备不仅持续遭到利用,还被转变为攻击平台,这意味着攻击者可以更充分地利用这个必然增长的市场。
借助F5全新Quick Start,在AWS上快速开展业务
在AWS re:Invent开幕前,我们很高兴与大家分享F5与AWS之间全新的Quick Start集成。F5的Tom Atkins将介绍该服务如何启动、配置和运行在AWS上部署工作负载所需的计算、网络、存储及其他AWS服务。