安全的囚徒困境
0x00 - 前言
半夜睡不着, 翻来覆去的焦虑, 夜晚的失眠会导致第二天的昏昏欲睡, 继而影响第二天晚上的睡眠, 以此周而复始, 不断累加, 最终形成一个恶性的循环。
爬起来聊一聊最近的风声与我的一些想法吧。
0x01 - "安全五大日常基础能力"
2023年接近尾声,各安全公司的财报与裁员消息接踵而至, 哀声一片, 响彻脉脉。
同时也看到这了这个么一个词, "安全五大日常基础能力", 结果硬是刷到了现在也不知道这五大日常到底是什么.....
但是也能猜到了个大概吧,比如对领导的吹嘘,对客户的哄骗, 对行业热词侃侃而谈之类等等,应该不是什么褒义词。
随着今年疫情的结束, 整个世界并没有像着预期的欣欣向荣发展, 反而却背道而驰;楼市掉价,各个行业低落,失业潮一波接着一波......
寒冬这个词好像已经不是23年出现的了,但是感觉每一年都要被提及,且一年寒冷于一年。
整体的经济下行伴随着的,是讨论如何"消费降级",是如何额"降本增效"。而对于这个本来就有一部分人不看好的安全,在这个寒冬中,过的更是尤为惨烈。
其实早些年听到各种负面行情消息时我还是不屑一顾的态度,直到真正赤裸裸的数字和现实摆在面前时,同届的安全朋友消失在圈子时,还在坚持的朋友抱怨要放弃了转行时,才意识到可能真的出现了一些问题。
再回过头来看,整个安全行业好似已经遍体鳞伤。
0x02 - "为了挖洞而挖洞"
故事的起因来自于一篇偶然刷到的安全公众号文章,去除多余的截图和心路历程,总结一下:
挖src的漏洞时,发现了一个信息泄露,内容是账户的手机号,和加密的密码,密码解密失败,放弃,至此提交了src,src收录给了4分,整个事件结束。
在看完整个文章时心情其实很复杂, 没有像读到《js代码泄漏》的漏洞报告时的轻松愉悦的态度, 也没有像被提问到《SBCVE为什么无法扫出》时的愤怒与不甘, 我也不知道该如何形容这样一种的感觉。
这也是为什么突然对现在的一些公众号的文章越来越疲惫的原因,大部分的内容整齐划一:
- 夸张的标题:某某某集团/学院/医院/政府 RCE/百万数据/xxx
- 模糊的漏洞界面截图(为了脱敏)。
- 弱口令、已知1day、扫描器批量扫描打出来的入口点。
- 成功登陆后台(这步必须有)。
- 浅显的数据危害证明、打码的大量数据截图。
- 有一些会批量跑一些内网工具和脚本作横向移动,大部分src止步于口子,给一个src禁止内网这种的扩散行为的理由,也可能其他的因素。
- 最后给出价值证明,可能是奖金,可能是HVV评分,再就是感谢证书。
作为一个安全工程师,他可以在完全不清楚这个网络拓扑、整体架构、技术栈、部署逻辑的情况下,发现这样一个问题。
我一直不明白为什么会对这个文章耿耿于怀,而不能像面对"js代码泄漏"和"苕皮哥"这样的事情时一笑而过做个吃瓜群众,也不能像遇到一些弱鸡CVE时破口大骂一通。
直到今天突然意识过来,不是因为他这样的内容配上一个培训卖课的二维码,也不是因为过水的内容浪费了我的时间。
而是对安全行业的悲哀。
早期做安全服务的时候,很多师傅在乌云精彩的src挖掘文章在渗透测试工作中起到了一个思路上的指点:也培养了后期对一些api设计、api接口和数据的敏感程度。
为什么早期的文章精彩? 因为文章的内容、利用手段、参数构造、api信息、响应格式、逻辑判断、信息利用等等方面,每一篇文章都能够让你有所收获。
而师傅们挖漏洞,也不是在硬拿着漏洞模版和漏洞报告往应用服务上贴,真真正正的是在与开发/测试的人员进行思维上的对抗。打赢了,便是漏洞。
反观过来,模版一样的文章更映射出众多src的弊端: 为了证明/业绩,我必须要有漏洞,必须要有足够数量的漏洞。
也突然联想到,在哪里看到的老研发吐槽现在的安全工程师:
业务没摸清,代码也不懂,张嘴就要修复,工单响应晚了直接滴滴领导
现在的安全,像极了小学里的那个纪律委员,正和班主任报道着这周在课上说话的几个坏学生。
以及前阵子freebuf发的文章请先理解了云原生再谈容器安全,我觉得不仅仅云原生安全需要,同样适用于安全的各个分类。
做web安全没看过tomcat、django; 做病毒的没绕过沙盒......
这就好比原始社会与现代社会:在原始时代,你可以说不会语言不懂文字,只要能够捕到猎物,能活下去,就能生存,成为部落之王;而到了现代社会,只会捕猎甚至可能很难在这个世界存活。
早期国内的安全确实可能只需要了解什么是漏洞,怎么挖掘漏洞就可以了。但是当这一步已经实现了之后,就好比原始社会实现了温饱,下一步要准备迈入石器时代。
自然而然的,作为应代的安全工程师,有理由要求你要了解开发,了解业务,站在了解的角度之上,提出的才是安全建议;中国的安全已经不是需要遍地赤脚医生的时代了,不是对着任何病症都开一方药草就了事的情形了。需要你真正的对每一个病症有详细的了解,有丰富的经验,才能够面对各种各样的病人游刃有余,有效的"看病"。
回到这个src的文章,我不会对信息泄露/越权/弱口令等老式 top 10 问题嗤之以鼻,更不会否定这几百万的数据价值;而令我遗憾的是,那串没有被解密的密码,没有被攻破的内网,被忽略未探测的接口,被遗忘的安全测试,以及src那可笑的4分。
0x03 - "安全的囚徒困境"
囚徒困境(prisoner's dilemma)是指两个被捕的囚徒之间的一种特殊博弈,说明即使合作对双方都有利时,保持合作也是困难的。囚徒困境是博弈论的非零和博弈中具代表性的例子,反映个人最佳选择并非团体最佳选择。虽然困境本身只属模型性质,但现实中的价格竞争、环境保护、人际关系等方面,也会频繁出现类似情况。[百度百科]
简单的描述一下原始的囚徒困境:两个共谋犯罪的人被关入监狱,不能互相沟通情况。如果两个人都不揭发对方,则由于证据不确定,每个人都坐牢一年;若一人揭发,而另一人沉默,则揭发者因为立功而立即获释,沉默者因不合作而入狱十年;若互相揭发,则因证据确凿,二者都判刑八年。
那么假设你是这个囚徒,你该如何选择?
回到标题, 从一篇文章看到整个行业,安全正面临着囚徒困境。
我们把囚徒困境的模型换到安全行业中:假设所有的安全公司都是一个个的"囚徒",真实的攻击则是"审讯官",面对仅有且可能越来越小(大公司自研,小公司忙着活下去)的市场(类比困境中的三种惩罚),各家公司能做到"互不揭发"从而实现共赢吗?
答案大概率是消极的。所有人都会朝着"释放"那一丁点希望,期盼着自己是那一个幸运者,从而放弃选择"一年牢"的可能。最终的结果就是,行业毁灭,大家一起坐上八年大牢。
聊到这里,就不得不再提一下所谓的"揭发"。这也是国安全内目前最大的痛苦。
囚徒困境最大的问题在于,囚犯之间不能互相沟通。因此囚犯会担心自己沉默而被对方指认,所以国内的安全公司全部的精力都放在了,如何"有效的揭发"另一家安全公司,从而避免自己坐牢而对方过上了(财务)自由的生活。
而对比国外的众多安全厂家,为何能呈现一股欣欣向荣之势? 因为他们的关注点永远都是在于,如何与"审讯官"进行对抗? 如何能够瞒过"审讯官",或是如何能够与伙伴沟通一起瞒过"审讯官"。
另一个痛苦的点在于,这种局势就像是温水煮青蛙一般,没有看得到的破局之势。
今日A厂商为了证明比B厂商产品更有价值,硬加入了100多条安全策略规则,在下一次的竞争中作为标书检查项来碾压对方,而不管这100条策略是不是真的安全风险;明日B厂商快速抄了A厂商的规则,追平"安全能力",还反手添了一个"数据大屏"。打的不亦乐乎。
这么下去,已经没有人在意真正的安全与否了,不过都是敛财的产品,变了形状的金砖罢了,至少目前还像是块金子。
但是又不得不这样下去,否则就会是那个沉默的囚徒,被另外的人告发而无法生存下去,如果都无法活下去了,其他的就更没意义了。
在这样劣币竞选的大环境下,也难怪安全会被看衰。把中国的网络安全与保安行业类比一下就好了:
- 以前需要的都是身强体状身手敏捷的保安,现在便宜就行。(法制社会像小区这种没强需求谁会给你雇个年轻力壮的小伙? 老大爷一样看门)
- 以前的保安可能需要从小练功,但到了勇武时只需会打拳即可;现在的保安面试需要学会刀枪棍棒,工作时最后坐在板凳上喝茶养神。
- 以前的保安都是服务于雇主,现在保安都是爷,权限极高。(开发都是弟弟,安全都是大哥)
- 不多比喻了,号该没了。
如何拯救现在安全在大众眼中好似保险一样诈骗行业的印象,是属于各个安全厂商的囚徒困境。
0x04 - "谁动了我的奶酪?"
"变是唯一的不变" ----《谁动了我的奶酪?》斯宾塞·约翰逊
和下一届的小伙伴们交流的时候, 听到的最多的就是: "安全越来越卷了"。
仔细想想确实, 相比18年, 会用扫描工具就可以去现场打攻击, 会写代码的安全人员凤毛麟角, 能够对工具进行调参, 了解一些绕过, 挖过一些cms, 基本上都可以到达高级工程师了。
而时至今日,各类反序列化已经是八股文必备,开发语言起码要会一个python,手上没有cnvd/cisp证书? 回去等消息吧。
再加上实际可能面试的公司内部连一个java/php应用都没有, 清一色的.net/asp的古董,你每天的工作就是坐在电脑前对着所谓的安全产品,点击鼠标,向领导汇报今日的安全巡检。
如此的反差,乍一看确实,安全的门槛越来越高,近代的安全培训产出物已不能够满足达标了; 学完辅导班,还得回家做作业,真的是太"卷"了。
但实际上这种比较的意义一点没有,除了制造焦虑。
你如果拿18年的状态与00年再对比,拿着明小子阿D就是大黑阔的年代里, 我从未见过当年的那一帮人有在抱怨道,越来越卷了。
行业在不断发展,自然而然新技术的革新与换代将替换掉一波又一波的浪潮,唯一不同的,是替换的周期随着技术的发展,将越来越快,越来越迅速。
不仅仅是安全,开发也一样:现在的研发没做过微服务分布式,没有个千万级别的项目经验,还敢面试研发岗位吗? 对比那个可以照着手册敲代码的年代,整个的门槛确实提高了。
其实这和抱怨 xx 年没买比特币, xx 年没入楼市,xx 年没入股市一样,面对变化,怀念过去。
0x05 - 结尾
乱七八糟聊了一堆,今年确实是一个困难的年份,而且就目前的情况来说,明年将会更加困难。
时代在变化,并且越来越快,安全行业真的还能够在这个浪潮中扛得住吗?
我的答案是肯定的,未来不会没有安全;但同样,肯定不会是以现在的这个样貌活下去。
最近在刷行尸走肉,很喜欢的一张海报:
"黑夜即将来临,你是愿意就此长眠,还是愿意和我一起,冰冷的守着下一个黎明?"
参考链接
0.安全公司的财报 : https://mp.weixin.qq.com/s/RI3XX8veXirLfxe6e1qv0g
2.请先理解了云原生再谈容器安全 : https://www.freebuf.com/articles/container/377477.html
4.[百度百科] : https://baike.baidu.com/item/囚徒困境/5739141?fr=ge_ala