技术实践 | AI 安全:通过大模型解决高危WEB应用识别问题

news2024/12/27 9:06:12

一、引言

在日常企业安全能力建设中,收敛企业外网高危资产,以保障公司外部安全是企业安全的重要工作。WEB 高危服务(如:管理后台、内部系统等)外开是企业所面临的一个重要风险。针对该风险,传统的方式是基于规则进行识别,该方式需要投入大量人力成本进行规则维护。由于规则难以覆盖全面,经常出现误报、漏报,效果不佳的问题。

通过“文心大模型”,仅投入少量资源,解决了高危 WEB 应用服务识别的问题,并且准确率达到了 70% 以上,下面将详细为大家介绍。

二、传统高危 WEB 服务识别技术

传统高危 WEB 服务识别技术通过收集开源指纹库和内部产品指纹维护构建成了一套企业指纹识别库,其主要原理是通过获取 WEB 应用的 Header、Body、Title、Banner 等信息,对比指纹库规则进行判别,该模式下需要源源不断地扩充企业指纹库来达到较好的检出效果。传统的高危 WEB 服务识别技术架构如下图所示:

在这里插入图片描述
该架构主要包含三部分,分别为数据层、扫描层和业务层。其中数据层作为整个架构的基石,承载着公司网络资产和指纹资产,其数据丰富程度很大程度上决定了 WEB 服务识别能力的成熟度和覆盖广度。

扫描层通常对数据层数据进行处理,解析成固定格式的数据作为扫描输入源。一般情况下,利用端口扫描模块对资产发起端口发现,服务识别,CPE 信息获取等操作。在获取了一批有效的资产数据之后,对资产发起请求获取服务信息,并对比已有指纹库进行判别。其主要实现逻辑如下图所示:
在这里插入图片描述

  • 通过 WEB 服务解析模块对所有 WEB 资产服务信息进行提取
  • 获取到 WEB 服务信息后通过与指纹 DB 对比获取结果
  • 返回传递最终结果

在这里插入图片描述
图:指纹规则示例

业务层作为事件运营处置层,通常接受其他数据源的输入,安全运营人员判别事件后,将其推送给业务方进行修复,从而完成事件闭环。

三、高危 WEB 服务识别面临困难点

在第二章里了解了传统高危 WEB 服务识别的技术原理以及方案,那么从方案中可以发现会存在以下几点问题:

  • 检测规则依赖人工编写维护,在人力资源有限的情况下,如何保障外网高危服务资产的风险得以收敛?

  • 我们可以识别和发现已知框架和服务并将其转为检测规则,那么面对未知服务/框架我们如何能够发现潜在风险?

那么接下来,我将会围绕以上两点问题进行展开,讨论如何通过大模型能力帮助公司解决传统方案的痛点。

四、大模型高危 WEB 应用服务识别设计思路

在前面我们讲到了,传统检测方案依赖与人工维护指纹规则来保障检测能力的成熟度。那么在当下文生文大模型飞速发展的情况下,是否可以通过训练大模型等方式来识别高危 WEB 应用服务呢?答案是显然的。

4.1. 大模型输入

在开始正式训练模型识别高危 WEB 应用服务前,我们需要考虑好模型的输入数据格式。从安全工程师的视角来看,判断一个 WEB 应用服务是否为高危应用主要从以下几个方面:Title,Body、Header 等三类信息,其中较为重要的是 Title,Body 两块。由于原始的 HTML Body 中会包含较多无用标签和数据,因此我们需要在原始数据基础上继续清洗,以保证最终模型输入的数据是相对较为干净的。如果原始数据中包含较多的脏数据,可能模型会产生噪点,最终影响到真实场景下的输出不稳定。除此之外,由于输入的 Token 限制,需要对较大的原始 HTML Body 进行缩减以满足 Token 要求。

在这里插入图片描述
图:输入数据清洗示例

4.2. 大模型判别规则

为了训练模型,告诉模型哪类服务是高危服务,需要在前期制定好模型判别规则约束好高危服务的范围有哪些,可以通过提前界定好的规则判断 WEB 应用是否为高危服务,下面是几个判定案例:

  • 系统涉及到管理功能的平台视为高危服务。
  • 已知的开源系统/框架不应该开放到外网访问的视为高危服务,比如:Kibana、ElasticSearch、Grafana、Nacos 等。
  • 无效页面、错误页面视为非高危服务,比如:状态 404,500,502 等以及 nginx/centos 等 default page页面。
  • 对外提供服务的常规页面,产品介绍页面视为非高危,比如:百度智能云产品、百度网盘等 ToB、ToC 场景。

4.3. Prompt 构造

在上面我们定义好了部分判别规则后,需要构造模型理解的 Prompt 指导大模型如何进行服务判别,Prompt 的好坏影响着大模型的性能。一个好的 Prompt 上下文能够充分利用大模型的背景语料知识,并在 Prompt 提示下的特定工作内容中获得更好的表现。经过后期的观察表现,我们提炼出来了以下一部分 Prompt 作为模型指导,其内容如下所示:

“现在有一份从网站首页提取的数据,请你根据这份数据判断该网站是否属于高危服务,并给出响应的判断理由。\n\n”+

“## 要求:\n” +
“1.充分考虑数据中每一个字段,发现可能象征着风险的关键字。\n” +

“## 判断依据:\n” +
“高危服务主要指代暴露后可能对公司信息系统造成危害对服务。\n” +
“1. 对于管理后台登录、控制面板、数据库面板等页面,应当判定为高危服务。\n” +

“非高危服务指正常对外开放,提供各种功能的服务。\n” +
“1. 对于常规的网站服务、普通用户登录等页面,判定为非高危服务。\n” +

“## 输出格式\n” +
“{“reason”: “<判断为高危或非高危的具体理由>”, “isDangerous”: <true或false>}\n\n\n\n\n”

4.4. 输入数据源

在准备好以上的工作之后,我们需要挑选一批数据作为初始数据投喂给基础模型识别与训练。前期数据源需要保证数据的质量具有代表性,确保模型能够直观从数据源中构建出我们想要的结果。因此我们在训练前期,通过内部的资产库,挑选了 100 多条具有代表性的数据作为初始输入,这里包含常见的 WEB 应用框架(Grafana、ElasticSearch)、内部高危系统、常规百度对外服务和通用管理后台页面等。

在前期人工完成数据标记之后,我们已经基本完成了一个初版的数据源。为了提升模型的准确率,需要增加数据源来满足模型了解足够的知识。因此后期采用了 self instruction 的方法,直接调用大模型打标,并进行人工复核。

self instructe 用的是所谓语境学习 (In-contextLearning) 的方法,通过在 Prompt 中提供数个样例,依赖大模型预言基座,执行小样本学习。具体方式就是将上述的 Prompt 进行改造,构造几个预先设定好的对话上下文,让大模型在已经进行了几轮对话的前提下对新的内容进行生成。此处对话直接使用普适性较高且性能优越的旗舰模型:百度千帆 ERNIE 4.0 Turbo。

4.5. 模型微调

微调的数据量被建议在 1k 条左右。由于本模型使用的是百度千帆平台进行训练,按照格式导出数据在千帆平台上训练即可。得到的模型发布后,相较于原始模型能够更加准确地回答,并且确保了输出格式的准确,严格按照样式。

微调完成后,对于后续模型数据的录入,就无需再通过之前的 Prompt Learning 等方式,直接使用当前模型进行标注,人工筛选后重复训练进行模型强化学习。

通过以上流程,我们基本上可以训练出来一个较为精准的模型帮助我们识别外部高危 WEB 应用服务。接下来讲解一下训练后的模型在真实场景下的实践。

**

五、大模型高危 WEB 应用服务识别实践

目前该方案在公司场景中的架构如下图所示:

在这里插入图片描述
该架构主要分为两部分:WEB 资产信息获取和大模型判别。

目前应用在服务识别的下一模块进行调用,默认情况下进行外网资产端口发现和服务识别后,调用资产信息采集 Agent 解析 WEB 资产中包含的报文、标题等关键信息,经过数据清洗之后由 API 接口直接请求对接后端大模型能力进行判定;根据判定结果推送至事件运营中心运营。

那么在模型前期,会基于人工运营的数据对大模型进行 Prompt 调整,用来确保获得更加精准的 Prompt 帮助模型提升准确率。前期经过几轮迭代之后,模型可以在无人监督的情况下得出较好的精度。以下为训练后真实发现的高危 WEB 应用服务案例:

在这里插入图片描述
在这里插入图片描述
图:高危服务识别案例1

在这里插入图片描述
在这里插入图片描述
图:高危服务识别案例2

5.1. 后续迭代优化

在前期我们花费时间得到一个精度较高的模型后,在后期持续运营迭代过程中,只需投入少量人力复核识别结果,对偏差数据进行微调,可以不断完善提升模型准确率。流程如下图所示:

在这里插入图片描述
在后期人工标记过程中,可以定期对模型的训练数据进行纠正标记;积攒一批量的数据对模型进行微调,可以在一定程度上避免由于标记数据不足而导致的模型微调结果不理想的情况。

六、后记

在实际的安全使用场景中,该方式通过较少的数据集训练出较好的模型效果。目前能够以较为精准的知识判别 WEB 服务是否为高危应用,目前准确率达到:70%。同时在实际应用过程中,内部也发现了很多业务方的管理后台服务和测试环境等高危应用场景外开的情况,能够有效地解决如上提到的两点问题,在人力资源有限的情况下,只需要定期投入部分人力对模型进行标记调整,同时无需关注维护指纹规则库就可以达到较为显著的效果。

除此之外该方案面临最大的一个问题在于大模型并不具备先见知识,对于部分场景下的 WEB 应用缺乏真实的理解,比如 ToB 交付业务服务应该需要开放在公网提供给客户等场景下,大模型识别目前精准度还待提升。未来还需要持续投入人力完善模型训练,解决该场景下的问题。

七、AI+安全产品推荐

将大模型与代码安全相结合实现安全左移,也是百度安全实践的重要方向。我们基于百度文心快码(Baidu Comate)建设了 IDE 安全能力,可在编码过程中实现漏洞扫描和自动修复,帮助研发人员以最小成本解决安全问题。

如果对产品感兴趣,详情可点击参考代码安全智能体文档(https://cloud.baidu.com/doc/COMATE/s/Jm3due9vf#4-%E5%AE%89%E5%85%A8%E6%99%BA%E8%83%BD%E4%BD%93)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2251551.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】TCP网络编程

目录 V1_Echo_Server V2_Echo_Server多进程版本 V3_Echo_Server多线程版本 V3-1_多线程远程命令执行 V4_Echo_Server线程池版本 V1_Echo_Server TcpServer的上层调用如下&#xff0c;和UdpServer几乎一样&#xff1a; 而在InitServer中&#xff0c;大部分也和UDP那里一样&…

osg、osgearth源码编译(二)

如果比较懒&#xff0c;也可以不看这篇文章&#xff0c;网上应该有很多编译好的库。也可以找我要。 本人还是建议学会编译&#xff0c;因为其他人电脑上编译好的&#xff0c;可能在你的电脑环境上&#xff0c;出现这样那样奇怪的问题&#xff0c;所以&#xff0c;最好还是自己能…

【QGIS入门实战精品教程】4.11:文本型字段转浮点型

《QGIS入门实战精品教程(配套案例数据)》:本专栏以实战案例的形式,深入浅出地介绍了QGIS的基本使用方法,用一个个实例讲解了QGIS基本操作与常见的空间分析方法。订阅专栏,获取专栏内所有文章阅读权限,从私信查收配套实验数据等资料,持续同步更新! 文章目录 一、加载实…

【R库包安装】R库包安装总结:conda、CRAN等

【R库包安装】R studio 安装rgdal库/BPST库 R studio 安装rgdal库解决方法 R studio 安装BPST库&#xff08;github&#xff09;解决方法方法1&#xff1a;使用devtools安装方法2&#xff1a;下载安装包直接在Rstudio中安装 参考 基础 R 库包的安装可参见另一博客-【R库包安装】…

探索 IntelliJ IDEA 中 Spring Boot 运行配置

前言 IntelliJ IDEA 作为一款功能强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;为 Spring Boot 应用提供了丰富的运行配置选项&#xff0c;定义了如何在 IntelliJ IDEA 中运行 Spring Boot 应用程序&#xff0c;当从主类文件运行应用程序时&#xff0c;IDE 将创建…

Qt支持RKMPP硬解的视频监控系统/性能卓越界面精美/实时性好延迟低/录像存储和回放/云台控制

一、前言 之前做的监控系统&#xff0c;已经实现了在windows上硬解码比如dxva2和d3d11va&#xff0c;后续又增加了linux上的硬解vdpau的支持&#xff0c;这几种方式都是跨系统的硬解实现方案&#xff0c;也是就是如果都是windows系统&#xff0c;无论X86还是ARM都通用&#xf…

全面解读权限控制与RBAC模型在若依中的实现

目录 前言1 权限控制基础概念1.1 权限控制的核心要素1.2 常见权限控制模型 2 RBAC模型详解2.1 RBAC的基本原理2.2 RBAC的优点2.3 RBAC的扩展模型 3 若依框架中的权限管理3.1 菜单管理3.2 角色管理3.3 用户管理 4 若依权限管理的实现流程4.1 创建菜单4.2 创建角色并分配权限4.3 …

qt QGraphicsEllipseItem详解

1、概述 QGraphicsEllipseItem是Qt框架中QGraphicsItem的一个子类&#xff0c;它提供了一个可以添加到QGraphicsScene中的椭圆项。QGraphicsEllipseItem表示一个带有填充和轮廓的椭圆&#xff0c;也可以用于表示椭圆段&#xff08;通过startAngle()和spanAngle()方法&#xff…

SAP SD学习笔记15 - 返品处理流程2 - 参照请求传票(发票)来生成返品传票

上一章讲了返品处理&#xff08;退货处理&#xff09;的流程。 SAP SD学习笔记14 - 返品处理&#xff08;退货处理&#xff09;的流程以及系统实操&#xff0c;比如 返品传票&#xff1b;请求Block标记&#xff1b;收到退货之后的处理&#xff0c;请求传票的登录_sap 销售返品…

在 ASP.NET C# Web API 中实现 Serilog 以增强请求和响应的日志记录

介绍 日志记录是任何 Web 应用程序的关键方面。它有助于调试、性能监控和了解用户交互。在 ASP.NET C# 中&#xff0c;集成 Serilog 作为记录请求和响应&#xff08;包括传入和传出的数据&#xff09;的中间件可以显著提高 Web API 的可观察性和故障排除能力。 在过去的几周里&…

Y20030018基于Java+Springboot+mysql+jsp+layui的家政服务系统的设计与实现 源代码 文档

家政服务系统的设计与实现 1.摘要2.开发目的和意义3.系统功能设计4.系统界面截图5.源码获取 1.摘要 随着人们生活水平的提高&#xff0c;老龄化、少子化等多重因素影响&#xff0c;我国对家政服务人群的需求与日俱增。家政服务行业对我国的就业和社会效益贡献也与日俱增&#…

基于AutoEncode自编码器的端到端无线通信系统matlab误码率仿真

目录 1.算法仿真效果 2.算法涉及理论知识概要 3.MATLAB核心程序 4.完整算法代码文件获得 1.算法仿真效果 matlab2022a仿真结果如下&#xff08;完整代码运行后无水印&#xff09;&#xff1a; 仿真操作步骤可参考程序配套的操作视频。 2.算法涉及理论知识概要 自编码器是…

深度学习与持续学习:人工智能的未来与研究方向

文章目录 1. 持续学习与深度学习1.1 深度学习的局限1.2 持续学习的定义 2. 目标与心智2.1 奖励假说2.2 心智的构成 3. 对研究方法的建议3.1 日常写作记录3.2 中立对待流行趋势 1. 持续学习与深度学习 1.1 深度学习的局限 深度学习注重“瞬时学习”&#xff0c;如ChatGPT虽在语…

使用C#开发VTK笔记(三)-使用VTK创建可视化界面和简单点线面体模型

一.使用VTK创建可视化界面 1.创建C#可视化界面 使用Visual Studio 2022用.net 8.0创建窗体应用 放入两个水平分割的Panel左侧演示VTK 右侧放按钮 按照第一章节环境搭建的步骤,加入对应Kitware的dll并导入依赖 2.初始化Vtk窗口 引用Kitware.VTK,Form1_Load中,创建渲染窗口控…

ctrl键和大写键互换解决方法

电脑卡住之后突然发现Ctrl键和大小写键&#xff08;CapsLock&#xff09;互换了&#xff0c;后面试了几种方法都没解决这个问题&#xff0c;最后在万能的贴吧中找到解决方法——键位复位。 108和87键位复位操作&#xff1a; 1.先按住FN不放&#xff0c; 然后&#xff0c;再按住…

PVE相关名词通俗表述方式———多处细节实验(方便理解)

PVE设置初期&#xff0c;对CIDR、 网关、 LinuxBridge、VLAN等很有困惑的朋友一定很需要一篇能够全面通俗易懂的方式去理解PVE 中Linux网桥的工作方式&#xff0c;就像操作一个英雄&#xff0c;多个技能&#xff0c;还是需要一点点去学习理解的&#xff0c;如果你上来就对着别人…

UG NX二次开发(C++)-Ufun函数-UF_MODL_ask_face_props说明

文章目录 1、前言2、UF_MODL_ask_face_props的函数说明3、UF_MODL_ask_face_props的应用3.1 获取归一化曲面上的点3.2 获取非归一化曲面上的点1、前言 UF_MODL_ask_face_props是获取曲面上的微分几何的函数,其能根据曲面上的参数,获取点、矢量等,也是经常用到的一个函数,但…

软件测试技术面试题及参考答案整理

一、什么是兼容性测试?兼容性测试侧重哪些方面? 参考答案&#xff1a; 兼容测试主要是检查软件在不同的硬件平台、软件平台上是否可以正常的运行&#xff0c;即是通常说的软件的可移植性。 兼容的类型&#xff0c;如果细分的话&#xff0c;有平台的兼容&#xff0c;网络兼…

【面试题】2025年百度校招Java后端面试题

文章目录 前言一、网络IO1、服务器处理并发请求有哪几种方式&#xff1f;2、说一下select&#xff0c;poll&#xff0c;epoll的区别&#xff1f;3、Java 有一种现代的处理方式&#xff0c;属于异步I/O&#xff0c;是什么&#xff1f;redis&#xff0c;nginx&#xff0c;netty 是…

HDU Go Running(最小点覆盖 + 网络流优化)

题目大意&#xff1a;有一条无限长跑道&#xff0c;每个人可以规定自己跑步的方向&#xff0c;起点&#xff0c;跑步起止时间。每个人跑步的速度都是1m/s。最后从监控人员哪里得到了n个报告&#xff0c;每个报告给出了某人在某一时候所在的位置&#xff0c;问跑步的最少可能人数…