本文首发于安全客平台,https://www.anquanke.com/post/id/266237
笔者作为某公司的安全开发独自一人负责安全运营平台的开发,经过数个月的折腾以及其他安全同学的合作,目前该平台已经运营了几百个安全漏洞以及一些安全事件,其它一些安全能力也在慢慢地接入中。在之前的公司,笔者也是作为安全工程师负责平台架构部门的安全运营,当时我们也有几个开发来负责安全运营平台的开发。安全运营平台其实可以作为一个公司偏向应用安全的基建之一,或许可以将它看做偏向于应用安全的 SIEM。所以,基于本文,也想分享一下在安全运营平台建设和开发的过程中的经验。在整个建设过程,开发工作只是一部分,体系的建设和实现也不可或缺,所以很多做法也是需要结合公司的实际情况,并一定就能够完全通用。
开发 安全运营平台的开发技术选型其实和其它后台业务类型的系统并不会有太大的区别。目前大多数应用系统都是采用前后端分离的方式,前端大多数是类似于 vue-admin 类型的技术方案。后端框架见仁见智,选择适合内部开发的语言即可。笔者之前最早实习的时候就是干前端开发的,后来干安全也是经常会写安全工具的代码,所以常用的语言也是都略懂一些,所以也就扛起了这个平台的开发工作。
最初的技术选型是想选择 gin-vue-admin,这是个前后端分离方案。后端基于 go 的 gin 框架,前端是和 vue-admin 比较类似的前端方案。这个轮子用起来不错,有很多开箱即用的功能,权限方面管理也非常方便。不过最终还是没有采取这个方案,因为内部的大多数应用都是基于内部自研的 go 微服务框架,其部署运维也与该方案息息相关。如果不使用内部的框架在部署方面则会麻烦很多,考虑到后期的运维,最终还是选择了基于内部的微服务框架开发。不过,这样做的最大的问题就是学习成本,因为这个内部框架与外部的 web 框架差异较大,而且作为安全的唯一开发也是两眼一抹黑,只能跟在开发大佬后面跪舔,才慢慢把应用的雏形搭建起来。前端框架比较简单,主要是基于 element 的 Vue 框架。
其实在开发过程中要说技术难度有多大也不见得,和其它的业务系统其实没有太大的区别。主要就是各种和头发丝一样琐碎细小的业务需求,所以开发过程就好比把这些头发丝一根根捡起来捋直了,所以有时候也是比较痛苦的过程。前端的用户体验和设计也是痛点之一,本身安全在开发就比较缺乏,尤其是设计方面。不过安全运营平台主要面向的也是内部的用户,主要就是安全工程师和开发,所以和面向外部客户的应用相比,要求也会稍微低一点。
需求建设 对于安全运营平台的大致规划是按照下面的框架来进行划分的,大多数公司的安全运营平台也会比较类似。安全运营平台的核心是应用安全的运营,漏洞管理作为安全运营平台的核心之一,也往往是安全运营平台被开发所熟知的方面之一。另外一方面就是集成各种安全工具的数据,包括像扫描工具,包括 SAST 以及 DAST 的扫描,将这些数据能够转换成实际的漏洞来推动。
漏洞管理 漏洞管理作为安全运营平台的最基础的一方面,同时也是其核心。漏洞的本质其实也是一个 bug,只不过它被赋予了安全这一属性,摇生一变被称为漏洞。那么漏洞自然就和开发日常处理的 bug 会稍微有一些不同。Bug 的处理流程相对来说会简单一点,测试把 bug 提给开发,开发确认之后修复完成,测试验证通过就可以了。安全漏洞的处理过程其实也是基于这一个过程的演化,这也是因为安全漏洞的特殊性,安全漏洞是一种特殊的 bug。一方面,安全漏洞的机密性要求更高,漏洞的可见范围越小越好,一般仅限定为要处理的人及它的直属领导,而不是任意一个人都可以查看漏洞,这样也是为了避免万一有人通过漏洞信息来进行利用。另外一方面,漏洞的处理流程相对来说会更复杂一点。在现实业务中,可能会有各种各样的场景。正常来说,一个应用应该具备测试环境、UAT 环境、生产环境。漏洞应该在之前的环境中被验证通过后,再进行下个环境的验证,这样的好处也是避免一开始就没有修复,导致返工,也降低了风险。但是往往也有不少应用并不同时都有这些环境,比如第三方采购的应用,一般都没有前两个环境,大多数是布在生产上的。也有的应用可能也没有 UAT 环境,就只有测试环境和生产环境。我们的做法是有提供两种模式给开发选择,开发可以选择默认模式,则这三种环境都有,开发也可以选择不带 UAT 环境的。针对于只有一种环境,我们的做法是把主动权交给安全工程师,安全工程师在复测完成后可以直接关闭漏洞,不过这个的弊端就是有时候安全工程师忘记直接关闭这个漏洞。
漏洞在被确认之前可能还有一些例外情况,包括像漏洞的忽略以及漏洞的接受。漏洞的忽略主要是漏洞的一些误报,这个主要是安全工程师可能对于业务有些了解还不充分导致的一些信息差,另外还有就是有些漏洞可能就是正常的业务需求。漏洞的接受则是这的确是一个漏洞,但往往漏洞修复非常困难,或者漏洞修复对业务的影响非常大,但是漏洞的危害程度没有达到高危及以上的那种程度。其实对于这种情况一般有两种处理,一种就是安全把漏洞提给开发,但是开发就是不太愿意修复这个漏洞,这个漏洞状态就一直保持着,如果哪天开发憋不住了,或者状态场景发生了变化,他们就完成了这个漏洞的修复。另外一种情况就是业务方接受漏洞并且不修复,这种可以理解为风险接受。其实在 CISSP 中的风险管理中就有这样的概念,如果采取安全措施的代价大于资产的实际价值,那么业务方可以选择接受风险。不过对于这种情景,是需要经过业务方领导的审批,确保业务方能够明确意识到这个漏洞潜在的风险。
漏洞另外一个重要的内容就是和资产的联动。一个成熟的 cmdb 对于安全来说真的太重要了。因为这可以帮助安全迅速的定位到明确的责任人,从而确保漏洞的及时修复,其实这也涵盖其它的安全内容,包括像安全事件,甚至在安全应急响应中,好的 cmdb 对于安全来说真的非常重要。不过,安全往往不是作为 cmdb 的第一责任人,一般 cmdb 的运维职责是落在运维方,安全起到的作用是反馈和治理。安全在使用数据的过程中,及时反馈,从而帮助数据修正,这样达到一个良性进化的过程。
事件管理 事件管理和漏洞管理也不太相同,所以事件管理的流程会被单独作为另外一个流程来进行管理。事件不同于漏洞,它往往也没有上文提到的各种的环境。事件的处理往往也是一个点对点的过程,安全工程师确认了安全事件,将事件上报给对应的处理人,处理人处理完毕,安全工程师验证没有问题,安全事件就可以关闭了。目前的安全事件的功能还是比较弱化的,主要还是用于事件的处理流程。不过未来事件流程最重要的方面是和其它安全平台的对接,包括与 SIME、IDS 等安全产品对接,并且能够将事件直接分发给对应的处理人,提高事件的处理效率。
安全能力 作为安全运营平台,SAST 以及 DAST 也是作为应用安全重要的补充能力。SAST 以及 DAST 市面上都有很多成熟的产品,也有很多公司采取自研方案。对于这两种产品最重要的能力就是数据的打通,如何将这两种产品扫描出来的漏洞直接转化为实际有效的漏洞。前期对于这种漏洞比较好的处理方式,可能是先同步数据,然后安全运营平台作为一个审核平台,这些数据经过安全工程师的审核和加工,有效的数据将转化为漏洞进行上报。另外一个重要的方面就是组件成分分析,这也是近几年非常火的一个概念。因为目前的软件开发都是大概率依赖于第三方组件,不管是商业的还是开源的、前端的、后端的以及各种语言的,这些组件的风险都有可能会对你自己应用带来风险。做好应用的组件分析,知道应用的依赖关系,能够快速地在紧急安全漏洞爆发初做到较快的响应处置。当然,这些都建立在资产都能够与这些信息打通的基础上,这样才能做联动响应,根据资产去盘点漏洞,同时也能够根据漏洞去看哪些资产受影响。
安全运营平台除了这些大的方面,其实也有很多细节方面需要考虑。比如像漏洞级别的定级,不同级别的漏洞对应着不同的威胁程度,那么其要求的修复时间也是不相同的。对于漏洞的响应时间应该是按照自然日来算的,因为攻击者并不会因为是休息日就鸣金收兵的。对于漏洞的定级,其实业界有一个比较成熟的定级模型,叫做 DREAD,即:
上周末回了一趟老家,高速来回行驶了800多公里。所以我很想结合这一次的高速的经验分享一下电车的高速形式经验,或许也能帮助一些鹏友解答电车在高速形式上面的问题。我的车之前的文章也提到过,小鹏 P7,长续航智尊版,选配了 NGP 辅助驾驶功能。当然,这篇文章的经验也主要是我本身这次的高速之行的感受,并不一定适用于所有的情况。
续航,谁先倒下? 新能源车的续航一直是很多人对于其望而却步的主要原因,电车的续航缩水一直为人所诟病。我这辆车的官方续航标准是 NEDC 586公里,当然这个续航一般是达不到的,实际用车的话,一般都是使用 WLTP 标准。充满电,长续航版本的里程显示是504公里(WLTP标准)。如果按照120的限速跑,开空调,开音乐,驾驶能耗是16多一点。基本上500公里的续航应该能跑到将近450公里左右。这对于我回家来说,基本上够用了。
说实话,我是真实体验到人的续航和车的续航,就我而言,基本都是我先倒下。基本上开了两个小时左右,我就已经觉得很累了。所以,停下来,休息一下吃个饭什么的,还是比较合适的。只不过去程的时候我那个服务器使用的桩功率有一点低,电流只有69A,一般在城市里基本上都是200A左右。当时,也没有换桩,不知道是不是仅仅只是那一个桩的问题。不过返程的时候另外一个服务区的充电桩就还可以,电流差不多有 120 多,基本上就够用了.当然,这是在高速不是特别拥堵的情况下,我的确也没有跑过那种特别极端的情况下,那种情况可能会是另外一种情景。
辅助驾驶好不好用 这段时间辅助驾驶闹得沸沸扬扬。其实,我是觉得现在很多媒体把辅助驾驶和自动驾驶混淆了。目前国内已经上市的车,是没有车已经达到了自动驾驶的级别。自动驾驶的级别一般划分L1-L5 5个级别,小鹏宣称自己是L2.5,我们暂且也认为其是L2级别。所以,一定要分清辅助驾驶和自动驾驶,目前人还是要时刻保持关注,随时做好接管的准备,千万不要做那种毫无意义的尝试,在危险边缘疯狂试探。
小鹏的 NGP 目前支持在封闭路段使用,包括城市高架和高速。在拥堵的路段,NGP 的使用体验不是很好,因为它反应比较慢,刹车偏急,起步偏慢,所以拥堵高架体验一般。但是高速上是非常适合 NGP 使用的,800 多公里的路程基本上差不多600多是通过NGP行驶的,这极大减轻了驾驶负担。NGP 基本上在自适应巡航,跟车方面都做的比较完善。因为 NGP 结合了高精度地图,所以可以完美地通过高精度地图来辅助驾驶。所以这个方案和特斯拉的视觉方案不同,这两种方案也是各有千秋。不过依赖于高精度地图的缺点就是有的地图高精度的缺失,辅助驾驶的降级不是很完美。NGP 不能很完美地降级到 LCC。当然,其实在我看来人为接管率并没有很大影响。另外一点,如果长时间使用辅助驾驶的话也会比较疲劳,所以有时接管开一下也是蛮好的。
NGP 最值得诟病的就是双车道的高速超车逻辑。经常遇到的情况就是在左车道行驶,如果前车行驶速度变慢,就会向右变道超车。但是这种情形一般都是因为右边不远处有一辆慢速行驶的火车。如果变道到右边的车道,马上就会被那辆火车堵住,然后左边就会一直有车经过,这种情形就比较尴尬了。所以,一般双车道的超车行为都会被我立马扼杀在摇篮中。
综合来说,这次的高速之行对于我来说总体体验还是不错的。如果满分10分的话,应该可以打个7.5分。当然,这一切的体验都是基于这次的高速之行得出的。小鹏 P7 目前来看还是一个综合素质比较出色的新能源汽车,如果有朋友感兴趣的话可以使用我的试驾链接试驾。
https://events.xiaopeng.com/r18f95.html?token=2cf68377
富文本编辑器是一个常见的业务场景,一般来说,通过富文本编辑器编辑的内容最终也会 html 的形式来进行渲染,比如 VUE,一般就会使用 v-html 来承载富文本编辑的内容。因为文本内容需要通过 html 来进行渲染,那么显然普通的编码转义不适合这种场景了,因为这样最终的呈现的效果就不是我们想要的了。针对于这种场景,显然过滤是唯一的解决方案了,不过过滤其实可以在后端和前端都是可以做的,后端做的话,一般是在数据存储在数据库之前。前端做的话,则是在数据最终在页面渲染之前做过滤。
前端的过滤方案,可以尝试使用开源的 [js-xss](https://github.com/leizongmin/js-xss)。先介绍一下这个库的使用方法,这个库可以在 nodejs 中使用,同样也可以在浏览中直接引入使用。
// nodejs 中使用 var xss = require("xss"); var html = xss('<script>alert("xss");</script>'); console.log(html); // 浏览器中使用 <script src="https://rawgit.com/leizongmin/js-xss/master/dist/xss.js"></script> <script> // apply function filterXSS in the same way var html = filterXSS('<script>alert("xss");</scr' + "ipt>"); alert(html); </script> 一般在 vue 的项目中,通过 webpack 也可以直接通过 CommonJS 的方式引入,与 nodejs 的引入方式基本一致。值得注意的一个问题是,默认情况下会去禁用 style 属性,这样会导致富文本的样式展示异常,需要禁用 css 过滤或者使用白名单的方式来进行过滤。
const xssFilter = new xss.FilterXSS({ css: false }); html = xssFilter.process('<script>alert("xss");</script>'); const xssFilter = new xss.
微信扫描投递即可
社招
校招
P7 提车也有两个月了,行驶基本上也有 2000 多公里。关于提车的介绍,可以参考我之前的那篇文章。经过这两个月的形势,我不仅加深了对 P7 的了解,同时自己的驾驶技术也提高了。下面,就自己这两个月的行驶感受做进一步总结。
驾驶体验 P7 的驾驶体验总的来说对于我个人来说还是非常优秀的,不过因为可能我也没有开过其它的什么车,发言权不是特别大。不过根据我爸的说法感觉还是不错的,方向盘和刹车都不错,不过刹车在某些情况下会变得很硬,不过可能与 P7 的 AEB 有关系。提到 AEB 还想提一次经历,有一次前面车突然急刹车,然后当时行驶速度比较快,我踩了几脚刹车,最后一脚重踩,可以明显感到 AEB 给刹车加了一把,虽然我自己踩应该也是不会追尾的,不过 AEB 感觉是上了一道双保险。有遇到一些鹏友吐槽 AEB 的,不过目前对于我来说,AEB 没有给我带来任何困扰,反而感觉是多了一份保障。
说完优点,就说说驾驶体验有点不太好的地方。P7 的悬挂实在是太硬了,稍微有点颠簸路面就感觉非常颠,这一点的体验是比较差的。还有就是感觉低速行驶有一些不太平的路面,左摇右摆特别的明显。
外观颜值 P7 的颜值可能是很多人买 P7 的重要原因之一。P7 的轿跑风格,那个大溜背,真的人见人爱。特别是和其它的车放在一起的时候,明显可以感觉 P7 的风格别树一帜,让人越看越喜欢。而且感觉上完牌照的 P7 比没上牌照的要好看多了。关于上牌体验,总体来说小鹏的体验还可以,我是自己在网上选号的,推荐网上选,比较方便,我是在电脑上通过网站选号的。虽然 P7 的车长有4.88米,但是由于其大溜背,所以后排空间也是捉襟见肘,不过因为平常后排也不怎么坐人,所以也还好,家里人感觉也还可以。后备箱的话,虽然是比较深的,但是高速不是很高,所以容量也是比较一般的。虽然前备箱也有,但是空间就要小得多的,而且开启也不是很方便,只能通过机械掰两下主驾旁边的开关,使用频率也非常低。
车机 小鹏的车机可以说的上是目前国内数一数二的,如果自信点,现在说是第一也不是很过分哈。车即真的非常流畅,没有任何延迟。而且车机上面的有个小优点,就是车机上的车模型的 UI 会和车的实际状态联动,比如车机上的车模型会显示你的实际号牌,并且还会同步汽车的车门开关状态以及车灯的状态,何小鹏不愧是做 UI 的。车机上面的功能划分也比较有逻辑性,会分为几个大类,切换不同的大类基本可以找到自己需要的功能。另外有一点可能有很多鹏友不知道,就是屏幕下拉会有一些功能的快捷设置,这点和手机还是比较类似的,毕竟小鹏的车机体验已经非常接近智能手机了。
不过有一点值得说的是,车机的优秀反而衬托了 APP 的薄弱。目前 APP 的功能实在是太少了,很多车机上可以看到的信息,在 APP 上却看不到。还有历史行程信息,感觉这个对于用户还是非常重要的,但是 APP 里面却看不到,甚至看不到仪表盘上面的那些行驶公里数,就只有一个总的历史公里数。感觉,这方面还是需要改进很多。不过,在车机上打开小 P 头像可以看到上一天的形式记录以及能耗方面,信息还是比较齐全的。
辅助驾驶 目前小鹏的辅助驾驶可以算得上是第一梯队,当然目前华为的极狐还没有正式量产上市。小鹏的 NGP (按导航辅助驾驶)目前的体验已经是非常好的,得益于高德高精度地图的加持,在很多地区体验可能比特斯拉的辅助驾驶体验还要好,当然特斯拉的视觉方案也很强。其实很多人对于汽车的自动辅助驾驶有一点误解,很多人以为自动辅助驾驶其实就是一个功能,其实不然。辅助驾驶里面是包含了很多项的,汽车也是通过视觉感知、雷达感知来获取大量的信息,来提升辅助驾驶能够获取的信息。现在新的辅助驾驶技术已经用上了激光雷达,这也是提高了感知的精度和范围。其实目前已有的方案并没有挖掘充分,P7 其实还是有不少算力冗余的。所以依靠现有的硬件条件,未来做到城市道路的自动辅助驾驶也不是不可能的。目前的辅助驾驶其实是一项项进阶形成的,比如车道偏离预警会在车辆偏离车道线的时候产生告警,不过在高速上有遇到过一些之前的车道线没有清除干净,导致告警并且勒安全带,感觉有点不太好。另外一些盲区安全辅助,在开门的时候有帮助,提醒你身边可能有一些突然冒出来的电动车。其它的就是 ACC, LCC, ALC 了,这些内容都是在智享版本上包含的,如果仅仅只是在城市中行驶,可能已经足够了。不过强大的 NGP 可以帮你在高架以及高速上基本上可以实现 0 干预行车,尤其高速上面的使用体验非常优秀。之前去嘉兴的高速上就使用了 NGP,那天雨下得特别大,视线非常不好,使用 NGP 反而感觉更好一些。即使在那么大雨的情况下,NGP 的使用都非常正常,体验也非常好。尤其是这次 2.
写这篇文章的时候,刚刚从撞车的后悔与悲痛中慢慢恢复而来,也借此机会分享一下这段时间买车的经历吧。前段时间突然勾起来想买车的欲望,就一直想买车。因为是在上海,因为牌照的关系,加上我个人的偏好,所以我只考虑新能源汽车,我对新兴事物的接受度还是非常高的。之前其实主要考虑的就是特斯拉,不过特斯拉由于续航问题和外观原因,感觉和小鹏比还是有一些差距,当然也是因为我的一个买了小鹏朋友的安利。
买车 买车之前,几乎所有人都反对我买小鹏或者新能源车。我买车没有试驾过其它的车,只试驾了小鹏 P7,当天就订了车。值得吐槽的是,我的销售除了订车当天催我订车之外,几乎没有给过我任何实质性的建议,基本什么问题问她几乎也都是白搭,给我的承诺也没有做到(这个销售的专业能力应该是非常差的)。当然这个是销售的个人原因,和小鹏也没有太大关系的。因为贷款的原因,配车还延迟了一个礼拜,另外值得吐槽的就是中行的贷款,后面还挺麻烦的,提车当天还不能放款,后面我还是选择了全款,白白浪费了一个多礼拜,当然这里面的弯弯绕绕销售也都没有和我说过。
好像大多数销售在推荐车的时候都会推荐智享版,不过因为我本人和自动驾驶也颇有渊源。当初研究生的时候,一开始的时候搞得就是自动驾驶的方向,当时全世界搞这个的人都不多,当时因为没人交流就上也没有硬件去做,当时读论文真的很苦逼,后来为了毕业后面还是换了方向发论文,但也算是和自动驾驶结下了不解之缘。所以,纠结了一下,最后还是选择了长续航版本的智尊版本。
差不多等了一个多月,终于等到提车的日子。提车还是在军工路,特地请假去提车。整体的提车过程还是比较顺利的,基本就是看下车,因为是新车基本上也没有特别好验的。相对来说,交付比我的销售要靠谱很多。后面就是付钱,办理保险和临牌就可以。不得不说,小鹏整体的造型还是不错的,轿跑风格也是比较喜欢。整个车的风格也是越看越喜欢,提车基本就是送了一个小花篮以及水杯和雨伞,其它的没什么礼物了。
驾驶体验 我本身也是个新手,虽然驾照拿了很多年,但几乎没怎么开过车。小鹏车开起来还是比较简单和舒适的,对于新手来说还是比较友好。小鹏的车机和语音来说,在当前新能源车或者是汽车行业,也都算是数一数二的。语音交互体验比较好,基本上大多数的功能都可以通过语音交互来进行控制,当然语音有时候也有拉跨的时候,不过总体来说还是比较可以的。另外,就是这个车的空间,虽然车长有 4.88 米,但空间感觉还是一般,不过这也很轿跑造型有关系,为了外观,不可避免的牺牲了一些空间。
小鹏最亮眼的当属于 NGP了,这也是我当初为什么还是选了智尊版的原因(智尊版还需要额外2万的软件费用),因为这真的是小鹏的长处。后面也看了很多评测,感觉真的很香,感觉至少和特斯拉比是强一点的,不过如果和华为相比可能还是要差一些。毕竟目前NGP只能在高速或者高架路上开启。后来,我也体验过一两次,在高架上使用 NGP 实在是太香了,尤其是对于我这种新手来说。NGP的驾驶方式优秀,变道技术也比我好很多,所以高架上用NGP开非常的省心,这也让我庆幸当初的选择没有错。下面的这个视频也是我有天晚上全程使用 NGP 行驶的。
https://www.bilibili.com/video/BV1wN411f7hs/
不幸的事 福兮祸之所伏,祸兮福之所倚。快乐的事没过多久,不幸就随之而来。节前的最后一天,在一个十字路口调头,撞到别人车上,结果小鹏也受了比较大的损伤。当时整个人比较懵的,当天就花了很多时间处理保险和事故,然后亲自跟着拖车把车又送回了提车的地方维修。因为配件的原因,维修可能还需要比较长的时间。这几天一直处在深深地自责和后悔中,都怪自己当时不够小心,但世上没有后悔药了,一切也不能挽回。希望自己吃一堑长一智,以后一定要小心小心再小心。
你好,小P!以后我们好好相处吧。
如果对小鹏感兴趣的话,可以走我的试驾邀请链接试驾。
GShark has beem maintained for alomost two years as an open source sensitive infomation detection tool. This tool is utilized in my own company and sparetime, multi information sensi
GShark 作为一款开源的敏感信息监测工具其实差不多维护也有两年多的时间。这款产品其实笔者在自己的公司或者平常都在使用,也通过这个工具发现多多起内部的信息泄露事件以及外部的一些的信息泄露事件。其实这种类似的开源工具数不胜数,大家的核心功能其实就是监控 Github 上面的信息,但是笔者要想把这种产品做得更好一点,就要从功能性、易用性角度来做进一步拓展。最近,对 GShark 做了较大的重构,前后端都完成了比较大的重构,之前老的版本也有写过文章介绍,所以关于这个工具的起源就不多介绍了,主要对这次重构和新的架构做介绍。
架构 目前 GShark 已经是一个前后端分离的项目,之前因为前端通过后端模板直接渲染的,所以在前端的功能性以及美观性都会差很多。新的重构是基于 gin-vue-admin,技术栈是后端通过 gin 实现,前端通过 vue-elemment 来实现。
所以架构主要就分为前端和后端两个部分,而后端则分为 web 服务以及敏感信息的扫描服务。新的架构具有以下特点:
细粒度的权限控制,更好的安全性,包括菜单的权限设置以及 API 的权限设置 丰富的前端功能,CRUD 更简单 搜索源和之前保持一致,支持 github, gitlab 以及 searchcode 部署 之前就有想使用 GShark 的同学来和我反映,其实之前的编译就已经很简单了。但是因为有些人不太熟悉 go,所以觉得编译还是有一些问题。这一次,笔者专门写了一个脚本来发布三个操作系统下的工具包,所以直接使用即可,开箱即用,即使你不安装 go 也无所谓。
rm -rf ./releases/* cd web npm run build cd .
正如题目,本文的也很直白,主要就是围绕这个问题展开。JavaScript 能否修改 Referer 请求头?现在 JavaScript 的能力越来越强大,JavaScript 似乎无所不能,修改一个小小的 Referer 请求头似乎看来不在话下(本文讨论的 JavaScript 仅限于在浏览器中执行,不包括 Nodejs)。
其实不然,在 web 浏览器中,绝大多数浏览器都禁止了 JavaScript 直接去操作 Referfer 请求头,当然这一方面也是出于安全方面的考虑。当然除了 Referer 请求头之外,还有其它请求头也被禁止通过 JavaScript 操作。
Referer 请求头属于 Forbidden header,这种请求头无法通过程序来修改,浏览器客户端一般会禁止这种行为。以 Proxy- 和 Sec- 开头的请求头都属于 Fobidden header name,还包括以下这些请求头:
Accept-Charset Accept-Encoding Access-Control-Request-Headers Access-Control-Request-Method Connection Content-Length Cookie Cookie2 Date DNT Expect Feature-Policy Host Keep-Alive Origin Proxy- Sec- Referer TE Trailer Transfer-Encoding Upgrade Via 可以通过一段简单的 demo 来进行验证。可以通过 Chrome 的开发者工具来进行验证,创建一个 xhr 请求,并且尝试来设置请求头。
可以看出,如果设置 content-type,浏览器没有阻止,但是如果设置 Referer 的话,浏览器则不允许,提示 Refused to set unsafe header "Referer"。
原文:微软 open sources CodeQL queries used to hunt for Solorigate activity
译者:madneal
welcome to star my articles-translator, providing you advanced articles translation. Any suggestion, please issue or contact me
LICENSE: MIT
Solorigate 攻击的一个关键方面是供应链攻击,这使攻击者可以修改 SolarWinds Orion 产品中的二进制文件。这些经过修改的二进制文件是通过以前合法的更新渠道分发的,并允许攻击者远程执行恶意活动,例如窃取凭据,提权和横向移动,以窃取敏感信息。该事件提醒组织不仅要考虑是否准备好应对复杂的攻击,还需要考虑自己代码库的弹性。
微软坚信以透明的方式进行领导并与社区共享情报,从而改善整个行业的安全实践和状况。在此博客中,我们将分享审查代码库的过程,重点介绍一种特定的技术:使用 CodeQL 查询来大规模分析我们的源代码,并排除存在代码级别的危威胁情报(IoCs)和与 Solorigate 相关的代码模式。我们正在将本次本调查中使用的 CodeQL 查询开源,以便其他组织可以执行类似的分析。请注意,我们在此博客中介绍的查询仅可用于查找与 Solorigate 植入程序中的源代码具有相似之处的源代码,无论是在语法元素(名称,字面量等)还是功能上。两者可能在良性代码中同时发生,因此所有发现都需要进行审查以确定它们是否可行。此外,不能保证恶意行为者在其他操作中被约束为相同的功能或编码风格,因此这些查询可能无法检测到与在 Solorigate 植入代码中看到的策略有明显差异的其他植入代码。这些应被视为只针对攻击审计技术的一部分。
长期以来,微软一直采用完整性控制来验证分发给我们的服务器和客户的最终编译二进制文件在开发和发布周期的任何时候都没有被恶意修改。例如,我们验证编译器生成的源文件哈希是否与原始源文件匹配。尽管如此,在微软,我们仍然秉承 “assume breach” 的理念,该理念告诉我们,无论我们的安全实践多么勤奋和广泛,潜在的对手都可以同样地聪明并拥有大量资源。作为 Solorigate 调查的一部分,我们使用了自动和手动技术来验证我们的源代码,构建环境以及生产二进制文件和环境的完整性。
微软在 Solorigate 调查期间的贡献反映了我们对 Githubification of InfoSec 中描述的基于社区的共享愿景的承诺。为了保持我们对防御者知识的了解并加快社区对复杂威胁的响应的愿景,微软团队在此次事件期间公开透明地共享了威胁情报,详细的攻击分析和 MITER ATT&CK 技术,高级狩猎查询,事件响应指南以及风险评估工作簿。微软鼓励其他安全组织开源自己的威胁知识和防御者技术来共享 “Githubification” 愿景,以加速防御者的洞察力和分析。如前所述,我们已在 https://aka.ms/solorigate 上收集了全面的资源,以提供有关攻击的技术详细信息,威胁情报和产品指南。作为微软全面调查 Solorigate 的一部分,我们检查了自己的环境。正如我们之前所分享的那样,这些调查发现有少量内部帐户存在活动,并且一些帐户已用于查看源代码,但是我们没有发现任何对源代码,构建基础结构,已编译的二进制文件或生产环境进行任何修改的证据。
本文首发于安全客平台,https://www.anquanke.com/post/id/228916
起因 近期在内网发现了有个应用之前的开放重定向漏洞的绕过,通过这个漏洞绕过,我又发现了 apache/dubbo 的一个有意思的问题以及 URL 相关的话题。
之前,给内网应用提交过一个开放重定向漏洞,后面又发现这个开放重定向漏洞存在一个绕过方法。假设一个恶意 URL 为 https://evailhost#@whitehost,那么这个恶意链接依然可以实现跳转。开发说他们已经做过了白名单限制,理论上应该不存在被绕过的可能了。那么我就去看了下代码,对于重定向地址进行验证的代码类似如下。
public static String checkUrlSafety(String url, List<String> domainWhitelistSuffix, String domainWhitelist) { Url url2 = null; try { url2 = UrlUtils.parseURL(url, null); } catch (Exception e) { } String host = url2.getHost(); if (verifyDomain(host, domainWhitelistSuffix, domainWhitelist)) { return url; } else { ... } } private static boolean verifyDomain(String host, List<String> domainWhitelistSuffix, String domainWhitelist) { return domainWhitelist.