Coder Social home page Coder Social logo

ai-for-security-landing's Introduction

AI-for-Security-Landing

企业级、可落地、可复用的安全智能化实践

版本

  • 当前更新版本:2022-02-19 版本地址:commit
  • 如果您发现任何更新、问题或改进,请随时 fork 和 PR
  • Please feel free to fork and PR if you find any updates, issues or improvement.

企业级实践

  • [攻击同源聚类]
  • [恶意机器流量分类]
  • [CVE漏洞命名实体识别]
  • [CVE漏洞利用可能性预测]
  • 攻击者知识图谱

踩坑经验

目录

介绍

该指南最初由 404notfound@柳星 编写,分享机器学习落地安全的经验,趟过的路,哪条路是通畅的,哪条路是需要避免的,目的是使一些同路人能快速Landing,同时也欢迎同路人加入一起编写。

指导原则

安全问题

0 定义好问题

落地优先级:安全>数据>特征>算法,定义问题,即确定待解决的安全问题,是第一要务。「好问题」最好同时需要满足「必要性」、「充分性」、「新颖性」,必要性是指安全团队内部价值需要,充分性是指样本及标签等可被低成本构建,新颖性是指不再是复制现有问题,例如URL异常检测、XSS检测等。

数据问题

1 检查数据标签纯净度

garbage in, garbage out。

训练阶段,检查黑白样本标签纯净度。尽可能100%纯净。如果,黑中有白,预测阶段会误报,白中有黑,预测阶段会漏报。

2 剔除数据集的噪声

预测结果不理想的原因,可能是基于噪声训练了模型,此时最佳选择是剔除噪声样本,剔除的方法可以是人工,也可以是模型,比如预测得分在0.5附近的样本我们认为是噪声数据。出发点是假设大部分样本标签标注正确,而模型对预测结果的不确定是噪声导致的。

3 黑样本分布多样性

训练阶段,检查黑样本标签分布多样性。原始数据来源和风险标签类型尽可能覆盖全面,因为会影响到预测阶段模型的泛化性。

4 避免黑样本浓度过低

训练阶段,检查黑白样本标签分布均衡性。建议黑白样本比例最低控制在1:100~1:1000。可以通过白样本的下采样抽样和黑样本的上采样控制浓度。

5 检查脏数据

脏数据,可能会导致后续数据和算法处理有效率和性能问题。比如sql长耗时、算法长耗时,训练准、预测不准等问题。因此,当出现预期外的问题时,排查脏数据。

  • 如果是处理效率问题,尝试数据截断
  • 如果是算法性能问题,遵循第一条守则检查数据标签

数据向量化

6 特征工程选型
  • 统计特征。考虑时间+空间维度,比如过去90天内xx的统计特征,当天xx的统计特征。
  • 如果数据体现出行为序列方面的规律,使用NLP处理特征化。

机器学习算法/神经网络的构建问题

7 机器学习算法选型
  1. 在显性黑样本极少时,行为手法未知,风险类型不明,优先采用无监督算法发现事件,总结规律,写成规则。反之,优先采用有监督算法
  2. 聚类算法优先采用dbscan(参数敏感型),异常检测优先采用iforest,有监督算法优先采用lgb
  3. dbscan落地安全的优劣势
    • 优势:不需要输入类别数k;可以发现任意形状的聚类簇
    • 劣势:聚类收敛时间可能较长;调参复杂,需要联合调参

训练问题

8 调整超参数
  • dbscan有2个核心参数,建议联合调参。
    1. 𝜖-邻域的距离阈值eps
    2. 𝜖-邻域的样本数阈值min_samples

预测问题

9 训练过程和预测过程保持强一致性

训练过程中使用的特征提取方法,产出的产物如:模型、词嵌入向量词典,在预测过程中要对应使用训练过程中的成套方法和产物。 bad case:在预测过程中,使用了一次训练模型任务中的词嵌入向量词典,使用了另一次训练模型任务中的模型,导致预测发生意外,不符合预期。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.