“我让你给我展示一下和事情无关的‘业余爱好’,XX都X了,你就给我看这个?”我怒道。
“对啊,这便是和事情无关的业余爱好啊。由于这些技能现在都还用不到事情里。” c0debreak一脸呆萌。
瞬间,我特殊想见见那个立时就要和他结婚的妹子,听说她也是个程序员。我强烈疑惑他们的蜜月旅行会是:在用马尔代夫海滩做桌面的电脑上敲代码。

c0debreak,百度安全工程师,一个比百度工程师还像百度工程师的百度安全工程师。实在,c0debreak还有另一个身份,那便是OpenRASP项目卖力人。
OpenRASP,看到这个名字时,估计很多人也像我一样升腾起不明觉厉的觉得。(我以为凡是名字里带有五个大写字母的项目都挺有出息,例如:CPPCC,不知道的童鞋可自行百度)实在,OpenRASP是一个百度安全旗下的免费开源安全项目,全称该当是:Opensource Runtime Application Self-Protection开源实时程序自保护系统。它从属于百度OAESE智能终端安全生态同盟,是个中五大开放技能之一。
作为一个把繁芜科技讲大略的媒体,我总结这套系统的功能便是——检测网络入侵,从而创造漏洞。
在这类功能的系统中,最著名的要数 WAF,也便是Web运用防火墙。WAF被设置在运用的外部边界上,可以通过特定的规则和模式识别出恶意要求,并且把它们拒之门外,是一种被广泛运用,连程序员家的猫都知道的网络安全系统。
我们便是想颠覆 WAF!
弗成思议,一个不爱说话只对你呵呵笑的宅男工程师在沉默了五秒之后溘然负责地看着你,没有一点过度直接说出这么一句“豪言壮语”。
一、颠覆 WAF的 OpenRASP到底是神马?
在 c0debreak看来,传统WAF存在一个非常大的问题,概括起来便是:“由于不足深,以是不足爽”。为了比拟二者的技能实现办法,下面我们以一幢办公楼的安保来举个例子:
WAF——门卫模型
WAF代表大楼的门卫,很遗憾这里的门卫并没有朝阳大妈那种柯南般的聪慧。每当走进一个人,他只会拦下来问:“来者何人?”并且把这个人的形态样貌和手里的册子(特色库)逐一核对。如果不是“在案”的坏蛋,就一律放行。
虽然特色库在一直升级,但是从坏人的角度来看,这样的门卫并非无懈可击。如果我是小偷,我本日来的时候可以戴一顶红帽子,来日诰日可以换一顶绿帽子,后天乃至男扮女装。对付技能水平一样平常的 WAF来说,很可能“穿上马甲你就不认识我了”。而智能程度高一些的WAF,可以利用技能识别出一些“变装”伎俩,但这时对方同样可以用“整容”乃至“换人”的方法,加大本钱再次骗过门卫的眼睛。
如果想有效地阻挡坏人,WAF必须以非常高的频率升级特色库,但纵然是这样,它仍旧无法摆脱两个弊端:1、永久追在仇敌后面跑。2、高居不下的误报率。
OpenRASP——管家模型
RASP技能,干脆选择了另一个思路,它把防护系统跑在每一个运用内部。还是以大楼作比喻,这相称于在每个办公室里都设置了一位管家(便是上图这个Superman)。无事不登三宝殿,坏人进入大楼,肯定是要做坏事的。以是RASP的思路是:你长了一张什么脸我并不关心,主要的是你有没有在房间里做出“攻击动作”。
c0debreak给我看了OpenRASP的技能文档,里面列举了25类“攻击动作”。
这个中包括:数据库 SQL注入、数据库慢查询、任意文件上传、敏感文件下载等等。。。
每一个攻击场景,都有详细的代码描述,而这种描述,比较 WAF上繁复的规则要大略许多。正如天下上的骗局有千万种,但末了无外乎是把你口袋里的钱取出来;天下上越狱的方法有千万种,但终极的动作都是离开牢房;男人们对姑娘的甜言蜜语永久在翻新,但终极目标都是【此处省略三个字】。只要你能站在事宜的逻辑中央,分辨出真伪善恶就相对随意马虎很多。
利用对“攻击动作”的判断,OpenRASP可以比较精准地揪出恶意攻击行为,有了恶意行为,就可以由此回溯,找到未被创造的漏洞。
二、OpenRASP厉害在什么地方?
如果不考虑技能实现的难度和本钱,显然为每间办公室单独设置一个管家比在大门口设置门卫的模式更为安全,由于管家们可以看到门卫看不到的“详情”。类比到 WAF和OpenRASP上,这意味着两种安全系统可供判断的信息量是不一样的。
WAF节制的是软件的“入口流量”,
而 OpenRASP却节制了内部所有动作的“高下文联系”。
这同样可以用一个例子来解释:
在 WAF所代表的“门卫模型”中,如果一个人带着锤子进入办公楼,门卫无权拦截他,由于这个人并没做什么伤天害理的事情,而且依照规章,带锤子进入办公室也未尝不可。
在 OpenRASP所代表的“管家模型”中,同样还是这个人,进入办公室之后,却猛地用锤子砸向文件柜上面的锁,那么毋庸多言,管家上来一个扫堂腿撂倒便是。
你看,之以是门卫不敢拦下这个拿锤子的人,便是由于他不节制这个人接下来的行动信息。而房间里的管家,却是有充足把握做出判断的。
实际上,OpenRASP身处运用内部,还有诸多的好处。为相识释OpenRASP技能的优点,c0debreak用了四个关键词:
1、误报
广义的黑客“攻击”,该当包含两个方面:1、扫描;2、实际进攻。这大概对应着扒手的“踩点”和“盗窃”两个步骤。
这里有一个主要的认知:“踩点”本身是不违法的,乃至对你来说是不用在意的。
为什么这样说呢?看过阿凡提的叔叔姨妈们该当记得,有一集讲的是盗贼挨家挨户踩点,终极选定了几家作为盗窃工具,并且在门口标记了暗号准备晚上“光临”。(当然阴谋被神勇的阿凡提创造了并且把每一家门口都画上了同样的暗号)
科普一下扒手在你门口做标记的含义
我想说的是,你家大门被各种人打量,并不虞味着你一定会被盗。说回黑客攻击,借助自动化工具,黑客进行的扫描行为可能是实际进攻行为的万倍或亿倍之多。这是一种范例的“广种薄收”的策略,绝大多数扫描仅仅勾留在扫描。如果你的系统没有攻击代价,或没有他节制的漏洞,黑客根本就不会对你采纳下一步动作。
有了这个背景知识,你就可以进一步感想熏染 WAF和OpenRASP的差异了。
c0debreak给我举了个栗子:
如果有人扫描了一个根本不存在的路径,这很可能便是自动化程序进行的扫描,产生威胁的可能性非常小。但是由于 WAF不节制运用内部的信息,它没办法判断扫描的危害性有多大,因此保险起见只能报警。
这时 OpenRASP的上风就非常明显,它知道运用内部的路径,以是就会选择不报警。
这便是 OpenRASP误报率低的事理之一。
2、兼容
如果你看过《唐人街探案2》或者更早的《不见不散》,你可能记得里面都涌现了中国人教美国警察说汉语的细节。为啥美国的警察要学说汉语?很大略,由于作为安全保卫者,须要和你的被管理者有措辞互换。
一个正常的运用,在URL里面用“&”来分割要求参数,但是,在有些措辞中,也可以用“;”来分割。如果你不知道参数还可以这样写,那么你一定会漏掉一些攻击的代码。
c0debreak说。
还是之前的事理,WAF存在于运用之外,它不知道也不关心运用本身是什么措辞写成的。这就很难完备兼容后端运用的特性,而 c0debreak和团队,根据Java、PHP等每一种措辞来独立开拓。这虽然会耗费很多韶光和精力,但是换来了非常好的兼容性。
3、运用热补丁
正如之前所说,同一类漏洞,在黑客手里可能被披上各种伪装来利用。这些相似的攻击方法,在 WAF看来却没有内在联系,对付每一种都要逐一添加规则。实在,这样做的最大问题并不在于“笨”,而是在于“慢”。
一旦黑客成功打破进入系统,就有可能迅速安插后门。后门设置成功,就相称于多了一条供他来去自由的密道,根本不用再走大门。WAF再想创造他的难度就大大增加。
而 OpenRASP在运用内部,把攻击动作抽象成为一种“OGNL表达式”,大意便是透过征象看实质,任你千路来,我只一起去。只假如利用事理相同的攻击手腕,无论外表怎么翻新,都可以被直接识别。
这便是 c0debreak所说的“运用热补丁”,从某种程度上说,它可以防护“未知攻击”。
最近三年,Struts漏洞被爆出三十多个,但是针对这些漏洞的利用方法,实在都收录在我们的25条攻击套路之内。根据我们的测试数据,是完备可以拦截的。
他说。
4、安全编码
既然把 OpenRASP比作是“办公室”里的管家,那么除了“抓贼”的浸染以外,他一定还有帮你做好内部安全规范的浸染,比如机密文件不能随意放置,不要把钥匙挂在锁上等等。。。
在企业做事器里,这种环境同样存在:
数据库查询的时候,有哪些字符串的拼接是不能涌现的;哪些敏感的函数是不能让数据库自己利用的,等等这些编码规范问题造成的漏洞,该当在研发阶段就消灭在抽芽里。如果 OpenRASP被嵌入在运用里,随着系统开拓流程,这些缺点都能被警告和纠正。
c0debreak说。
其余,OpenRASP还可以赞助做事器调度安全基线,例如做事器的某些安全策略是不是被开启,是不是存在弱密码等等问题。
从这几点来看,OpenRASP确实很有出息。
三、“OpenRASP”的“Open”
实在,有关 RASP的理念,早在2014年就已经被提出,并且被天下顶级咨询公司Gartner列为应⽤安全领域的“关键趋势”。
这就让我想到两个问题:
1、为什么四年以来,RASP仍旧没能取代WAF的江湖地位?
2、百度安全现在推动这种技能,是否有出息呢?
这两个问题,还真不太好回答,不如来看三个小故事。
1st
CPU性能损耗20%。
“卧槽!
”c0debreak看着这样的数据,内心实在是崩溃的。
此刻是2017年9月,这便是OpenRASP最初版本的性能。
实在二心坎比谁都清楚,性能本来便是 RASP技能比较传统WAF的最大劣势。毕竟在每个运用内部都强势安插了那么多“内线”,这些进程人吃马喂,哪个不向CPU要粮饷?
一个安全进程花费了 CPU 20%的性能,就好比你请的管家要花掉百口五分之一的收入,不用说,连我都知道不会有人买单。(不过OpenRASP是开源项目,本来就不须要费钱。纵然这样,这种指标还是意味着帮倒忙。)
他知道,自己和团队掉进了一个所有 RASP技能开拓者都曾经掉进的坑。这样的性能指标拿出去,百度丢人,百度安全也丢人。更恐怖的是,为了降落社区参与的门槛,团队采取了之前没人在这类产品上利用的JavaScript(JS)措辞编写了所有的检测逻辑。以至于连可参考的古人履历教训都没有。
项目上线的几个月的韶光里,团队都在为办理这个问题发愁。断港绝潢的时候,他们乃至都已经决定放弃之前的所有代码,把编程措辞换成 Lua重新开拓。实际上,他们已经动手开始做新的Demo了。
很巧,某日一位团队小伙伴忽然抬开始,用百度程序员特有的镇静语气对 c0debreak说:那个,我彷佛找到理解决的办法。。。
他的办法便是,用火狐最新版的 Rhino引擎替代之前的谷歌V8引擎来编写代码。
便是这个从来没有人考试测验过用的 JS+Rhino组合,把CPU的性能损耗迅速降到了1%-5%的可用水平,作为RASP产品中唯一开源的一个,OpenRASP的性能开始超越市情上大多数的商业产品。这让 c0debreak和团队大松一口气。由于就在几个月以前,项目还是“死活未卜”的状态。
2nd
此时的 c0debreak还在焦灼地等待一个“讯断”。
一个月以前,他就把 OpenRASP的项目操持书递交领导审核了,百度安全实验室的卖力人韦韬从技能角度很快开了绿灯,现在项目就放在百度安全总经理马杰的桌面上,等待他末了拍板。
但是一个月的韶光过去了,没有音信,c0debreak慌了:“我觉得当时这个项目要被砍了,以为蛮可惜的。”
而另一边,马杰面对 OpenRASP的操持确实有些犹豫。但让他拿不定把稳的最紧张缘故原由,不是“RASP”,而是“Open”。
久经疆场的安全“老炮儿”马杰非常明白,要运营一个开源项目,靠的可不是头脑一热。
首先,开源项目须要投入很大精力来宣扬和经营,如果发出去就不管了,那么命运肯定是去世路一条,这些年轻人是否能坚持下去是个未知数。
其次,开源项目是免费的,须要通过培植生态来实现效益,而 OpenRASP团队没人有开源项目的履历,未来要面对的寻衅确实不小。
但是,沉默寡言的 c0debreak在这件事上表现出少见的坚持,他三天一个表决心,五天一个问进度,一副赴汤蹈火永不言败的姿态。
纵然有所推迟,但马杰终极给这个年轻人投出信赖票;c0debreak拿到批复,没有多说一个字,火速开工。这是一个范例的属于百度的温情故事。
3rd
实在“开源”两个字,很能代表最近两年百度身上发生的变革。
从开源深度学习平台 PaddlePaddle到开源自动驾驶平台Apollo,看上去百度要在开源这条路上越走越远了。
OpenRASP也是这条路上的一份子。
某种程度上说,一个开源项目的运营,靠的不仅仅是核心技能团队,而是认同这个项目的社区中的每个人。
除了技能开拓本身,让这个项目得到更多的认同,也是 c0debreak急迫要做的事情。
他在百度内部各个部门“奔忙呼号”,先说服几个部门灰度测试了OpenRASP系统;几个月来,他还在"大众年夜众平台上不断发布OpenRASP的技能解析文章,“以去世相逼”让身边的技能大牛转发宣扬;他乃至找来一些比较成功的开源项目,从他们的代码提交记录里一点点学习运营开源项目的履历。
功夫不负有心人,百度安全实验室老大韦韬转发的一篇文章引起了OWASP(开放式Web运用程序安全项目组织)的关注,几天后,OpenRASP的先容涌如今了OWASP的网页上。
也便是在这些日子,OpenRASP的技能互换QQ群不断涌进来很多人。c0debreak立时带着三个同事客串客服,忙得不亦乐乎。
一开始人们问的都是怎么安装怎么配置的问题,到后来,问题就变成了支持什么型号的做事器,支持什么架构。项目主页上用于点赞的“Star”按钮,也开始有人点击。
OpenRASP项目在GitHub上的主页
几个月的韶光里,c0debreak和同事每天盯着Star的个数。每多一个Star,他们都觉得爽爆了。
2018年2月4日,对他和团队来说是一个值得纪念的日子。这一天,OpenRASP收到了第一份“Pull Request”,也便是代码合并要求。“社区中有人对项目的代码进行了升级,并且想合并到主代码中,这意味着有人开始主动为社区做贡献了,开源的意义真正被表示出来了!
”他愉快地说。
就在一个星期往后,团队又收到了一封来自西班牙的邮件,那位程序员用英语讯问 OpenRASP什么时候可以支持PHP措辞。c0debreak满怀激动地负责回答了邮件,要知道,他们乃至还没来得及把技能文档翻译成英文,目前只有官网上有一些大略的英文Q&A。
c0debreak以为,这个项目的发展乃至超过了自己最好的预期。短短几个月韶光里,唯品会、苏宁、携程、科大讯飞、绿盟等等大企业都已经开始内部测试这套系统,并且根据这套开源代码定制自己须要的版本。
和这些用户互换,讯问他们的见地和需求,现在成为了 c0debreak主要的事情之一。
他盯着屏幕上已经累积到300多的“Star”,严明地说:“看来未来几年,我都要全心投入在这个项目上了。”
在 Github页面上,标注了项目的路线图和里程碑
三个故事讲完了。
可能你心中的疑问被解开了,也可能你有了更多疑问。
c0debreak和百度安全的同事们创造了OpenRASP,并且奋力让它发展至今。他们想要的东西很大略,那便是让更多人理解OpenRASP,认可OpenRASP,乐意为OpenRASP做点什么。
打开网络空间搜索引擎 Shodan,里面已经可以查到很多第三方公司利用OpenRASP做的安全项目。至于他们是谁,详细若何利用OpenRASP,c0debreak并不理解,但他感到很幸福。“润物细无声”,这正是开源的魅力所在。
在 Shodan上,搜索到“OpenRASP”的地区,就会被标为赤色,现在舆图上只有四个国家。我问 c0debreak未来的操持,这个技能宅楞了一下,然后把手一挥,说:“全变成赤色。”
我溘然明白,对付开源天下来说,最好的姿态莫过于:
心怀梦想 信马由缰
再自我介绍一下吧。我叫史中,是一个爱慕故事的科技。我的日常是和各路大神谈天。如果想和我做朋友,可以关注微博:@史中方枪枪,或者搜索微信:shizhongst。不想走丢的话,你也可以关注我的自媒体"大众号“浅黑科技”。