去哪儿网
去哪儿是寰球最大的中文在线旅行网站,创建于 2005 年。去哪儿网为消费者提供国内外特价机票、酒店、游览度假、景点门票产品一站式预订服务,为游览行业合作伙伴提供在线技术、挪动技术解决方案。去哪儿近年来,接连发力大数据与人工智能,利用出游、住宿等畛域的全量数据和人工智能,为用户打造智能化搜寻、排序、举荐等服务。目前,去哪儿用户累计超 6 亿,平台年交易额超 1600 亿,且仍在疾速倒退中。
作为洞态 IAST 最晚期版本的用户,去哪儿在 IAST 与其 Q-SDL 平安体系的交融适配上有着独到的见解,非常感激去哪儿 Q-SDL 负责人耿徒弟对本次 IAST 实际的分享。
01 平安背景
新政策、新业务、新威逼
近年来,国家愈发器重信息安全,《网络安全法》、《数据安全法》、《个人信息保护法》相继出台并实施,对互联网企业提出了更严格的平安要求。在业务上,互联网企业的业务边界一直拓宽,用户和年交易额等均实现继续倒退,业务保障需要更强。但技术研发老本一直攀升、盈利增速降落都促使着以业务为主的企业,更加重视在平安上的“高产出”。据可查数据,自疫情暴发以来,黑客针对国内互联网企业的攻打简直出现指数级增长,企业面临的平安威逼极大。
在这样的背景下,互联网企业的网络安全能力建设,尤其是利用开发期的平安能力建设显得分外重要。阿里、腾讯、字节、去哪儿、轻松筹等企业均在着力强化利用平安开发,试图在利用开发期便大幅升高平安危险。DevSecOps 流程、SDL 流程在各企业都已早早落地实际运行,并打造适配其业务场景的平安体系。
平安需要
去哪儿联合本身理论,打造了 Q-SDL 体系。Q-SDL 体系通过预防、检测和监控措施相结合的形式,缩小设计、开发中的软件的破绽数量和严重性问题,升高利用平安开发和保护的总成本,保证系统的安全性。
从上图可知,用于安全漏洞检测的自动化工具仅包含 SAST 和 DAST,但 SAST 和 DAST 均具备不可避免的重大缺点。
咱们在理论运行中发现,白盒测试存在误报率高、审计时策略规定生效显著、扫描效率低下重大妨碍开发节奏等问题,尤其是无奈获取破绽数据对安全部门造成了很大困扰。而黑盒覆盖范围无限,覆盖率依赖于 Explore 的后果,无奈扫描 AJAX、CSRF Token、验证码等页面,无奈测试 APP,无奈定位破绽的具体代码,须要破费较长时间与人力来进行破绽定位与起因剖析。
去哪儿急需一款可能补救黑盒和白盒有余的产品来欠缺 Q-SDL 体系。
02 调研之路
思考到开源产品具备高扩展性、低应用老本的个性,咱们首先将抉择定位在开源产品上。因为过后市面上只有开源的 RASP,而没有开源的 IAST,因而首先调研的是 RASP。但调研后发现 RASP 存在重大影响服务器性能的问题,凑巧在理解 RASP 的过程中,发现前线平安正在研发 IAST,并打算开源公布,于是便进行了接触。以下为洞态 IAST 调研后果:
IAST 全称交互式应用程序平安测试,次要通过 Agent 来收集和监控利用程序运行时的函数执行及数据传输,并与服务端进行实时交互,进而更高效、更精确的辨认应用软件的平安缺点及破绽。同时可精确定位破绽所在的代码文件、行数、函数及参数,不便开发团队修复问题,还具备高下误报率、0 脏数据的劣势。但 IAST 在不同语言开发的 WEB 利用中须要有不同类型的 Agent、研发的技术难度和投入都十分微小。
洞态 IAST 产品架构
在调研中咱们发现洞态 IAST 在架构上齐全不同于其余 IAST,其余 IAST 往往“重 Agent 端、轻服务端”,而洞态的 Agent 端仅用于实现数据监听,破绽检测全副在服务端实现。这种办法的益处是 Agent 端代码和逻辑简略,单点故障率更低也极少须要降级,升高了保护老本;另外,传统 IAST 产品对于过后未检测的破绽都在 Agent 端间接抛弃,产品呈现新的检测策略后,须要从新发动利用的测试,而洞态 IAST 将检测数据保留在服务端,可轻松地在服务端进行回归测试。
产品架构阐明: 首先,在服务器上安装 IAST Agent。当 IAST 启动,用户拜访 Agent 服务后,Agent 便开始采集数据,并与 OpenAPI 服务通信,进行上报数据和 Hook 规定的拉取。OpenAPI 将数据存储到数据库中,包含 MySQL 和 Redis。而后,Agent 对 Engine 发送告诉,Engine 便会来生产数据库中的数据,并在剖析结束后将破绽信息回写到数据库中。最初,用户通过 WebAPI 查看数据库中破绽的数据信息。
洞态 IAST 检测原理
洞态基于“值匹配算法“和”污点跟踪算法”对破绽进行检测。这种算法检测准确率高,还无需采集和重放流量,能够适配现在各种场景下的破绽检测(如 API 网关、分布式、微服务等架构下的后端服务破绽检测),还不会产生脏数据,烦扰失常的开发测试流程。
对于检测发现的破绽,洞态依据内部可控数据的流传过程,残缺的还原破绽触发流程,帮忙 DevOps 团队疾速了解破绽、定位破绽,更好的解决破绽。通过赋能研发人员,进步破绽修复的效率。
洞态 IAST 产品劣势
- 第三方开源组件破绽剖析
- 利用破绽溯源、定位与剖析
- 利用破绽主动验证
- 全面的危险监测
- 开源带来低成本、高扩大、多策略和多场景
促使咱们抉择洞态 IAST 的起因,除以上产品长处外,还有洞态团队对 IAST 部署降级的全力支持。如果咱们抉择其余厂商的 RASP/IAST,不肯定能失去全力支持。
03 IAST 实际
去哪儿部署洞态 IAST 曾经有半年多的工夫,特分享一下 IAST 实践经验。
IAST 利用于 Q -SDL 体系
在 Q-SDL 体系中,IAST 承当测试的角色,并且打造了 IAST 平台收集破绽信息数据。
部署适配
在 Q-SDL 体系中部署 IAST,次要是从根底环境、应用环境、生命节点上进行适配,并在具体的点上进一步优化。
在去哪儿,IAST Agent 的部署环境包含容器与虚拟机二种。采纳分布式部署的形式,进步零碎的可靠性与可用性,并对二种不同环境开发一套规范流程,保障 Agent 在不同环境的标准化部署。部署结束后,须要将装置 Agent 的机器所在的网络和 Agent 接收数据的 OpenAPI 之间的网络买通,使 OpenAPI 能接收数据。
在理论利用上,通过二次开发,扩大 IAST 的性能,并推动和去哪儿其余平安工具的交融。通过洞态 IAST Agent 收集辨认企业资产,从而对整个资产进行破绽检测。为应答 IAST 运行过程中可能呈现影响业务等问题,咱们提出了二套解决方案。一是“软着陆”,即通过洞态 IAST 自带的解决方案,间接删除外围模块;二是“硬着陆”,基于去哪儿弱小的 API 间接将 IAST Agent 端去除。但咱们应用这么长时间,还没呈现过重大的问题。
在应用中,咱们并不是将 IAST 孤立地用来检测。而是把威逼信息和我的项目信息,上传至去哪儿的威逼建模平台,而后将 IAST、DAST 和 SAST 做相应的配合,有针对性地检测某些破绽,进步检测率。
公有云部署场景及计划
对于公有云部署场景,咱们次要做了二点变动:第一点是在 IAST Agent 部署时,把 Agent 包间接放入镜像指定目录,以应答宏大的测试流量。另一点是对 Agent 端启动命令进行植入,以适配标准化环境,从而有序地执行,不去抢占其余环境变量的资源,发生冲突。
整体的部署计划是遵循洞态 IAST 的根底部署计划,咱们只做了微调。业务端 Agent 没有做太大的扭转,仅对 Java 包进行了二次开发。为避免利用高流量高并发导致 IAST 超载,针对性地开发了负载平衡性能。而在 IAST 剖析模块上,咱们将 Redis 独立进去,并做得更弱小些以应答高流量高并发。
以下为咱们去哪儿网络进出口的真实情况:
为管制突发性的高流量,咱们采纳了“自适应流量采集 + 分布式架构”的计划。自适应流量采集将有效的流量过滤,分布式架构则可灵便撑持高并发,加重流量压力。
运行流程
理论应用感触
1. 值得称赞的点
- 利用威逼辨认宽泛
咱们在上线前利用靶场做过了大量测试,才释怀将洞态 IAST 上线。IAST 检测到的破绽类型简直笼罩所有的通用破绽,包含(继续减少中):
- 组件威逼识别率高
IAST 上线后发现了大量的组件威逼,具体数量等信息就不不便走漏咯。
- 技术真材实料,服务尽心尽力
2. 吐槽
- 高危破绽检出率较低
洞态阐明:因为去哪儿部署的是最早一版的洞态,出于稳定性思考,还未进行版本更新,因而在检测能力上绝对新版本会差许多。但洞态会增强研发力度,继续扩充可检测破绽类型以及高危破绽的检出率。
洞态:去哪儿的 IAST 实际亮点在于善于将 IAST 与本身 Q-SDL 体系的适配,也长于从本身所处互联网行业高流量高并发的特点登程,通过开发负载平衡性能、对 IAST 模块进行调整、扩大开发等伎俩,将 IAST 的作用施展到极致,也心愿大家都能从去哪儿的平安智慧中找到灵感。
对于洞态 IAST
洞态 IAST 是寰球首个开源 IAST 产品,于 2021 年 9 月 1 日正式开源公布。洞态 IAST 专一于 DevSecOps,具备高检出率、低误报率、无脏数据的特点,帮忙企业在利用上线前发现并解决平安危险。自开源公布以来,洞态 IAST 备受开源社区人员和企业的关注,包含工商银行、去哪儿、知乎、同程旅行、轻松筹等在内的上百家企业都已成为洞态用户。
官网地址:http://dongtai.io