怎么自定义安全检测规则

本贴最后更新于 2500 天前,其中的信息可能已经事过景迁

对于应用软件的分析常见的分类方式有以下两种:一种按照程序代码的文本形式分为二进制和源代码分析,这种分类法更多是从技术实现的角度出发;另一种按照是否运行程序代码,将程序分析方法分为动态和静态分析,这种分类方式更容易说清漏报和误报的发生根源.动态分析是通过真实或模拟环境执行程序发现漏洞(黑盒),而静态分析不执行程序,通过对源代码或二进制文件等进行漏洞检测(白盒)。由于程序漏洞大多使用隐蔽的数据或函数.所以动态检测的方式很难发现大部分的程序漏洞。通过静态分析源代码或二进制文件来发现程序的威胁效果是最好的。目前静态代码分析主要有以下几种方式:

  1. 缺陷模式匹配:这种方式的原理是建立一个缺陷模式库,将需要检测的源代码与缺陷模式库进行匹配,来发现代码中存在的安全问题。这种方式的优点是简单易实现,缺点则是误报率高,且需要缺陷模式库足够强大。

  2. 类型推断:这种检测方式是通过对代码中运算对象类型进行分析,保证每条语句都针对正确的类型进行执行。这种方式需要制定一套类型推理的规则。类型推断技术能够检测出代码中的类型错误,检测代码质量方面的一些问题,但对于安全问题的检测不够适用。

  3. 模型检查:这种检测方式将代码抽象成一个自动机系统,每条语句抽象为其中的一个状态,通过分析这个状态机,分析出代码中的问题。这种方式能够检验出程序并发等时序特性,对安全问题的检测也不够适用。

  4. 数据流分析:这种方式是从分析程序的语法出发,通过分析控制流图,得到程序中所有变量的定值信息,包括变量的值、赋值、 传递等信息。这种方式需要首先对程序进行完善的语法解析,工作难度较大,但实现后,能够有效的分析出安全问题的传播, 降低静态分析的误报率,因此对于安全分析意义较为重大。

    那么以上的类型如何落地呢?当前的我们的工作场景主要是通过 fuzzing、反复黑盒测试发现应用系统中发现的安全问题,为了提高效率,增大漏洞检测覆盖面,通过优化商业安全工具或者自研静态代码审计工具来提升 1、4 方面的技术效果进行提升,可以从技术上验证实现了对此类接口的二次开发,容许进行自定义规则。当前的首要工作需要逐步根据 casestudy 和基于经验的一些漏洞收集分析规则,作为后续工作的重要储备,最好有案例或者错误代码,团队审议如何编制加入这些自定义检测规则。

    暂时将规则大致为 CSRF,XSS,SQL 注入,命令执行,JSON 劫持,信息泄露,水平权限,服务器访问控制,源代码泄露,逻辑设计,权限控制,上传漏洞,Git 仓库潜在风险,安全配置不当,URL 重定向,CRLF 漏洞,ssrf,暴力破解、运行时暴露敏感信息明文,降低误报率。合入试运行的时候,采用命名为-TEST 开头的标志

  • 代码
    470 引用 • 591 回帖 • 9 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • Markdown

    Markdown 是一种轻量级标记语言,用户可使用纯文本编辑器来排版文档,最终通过 Markdown 引擎将文档转换为所需格式(比如 HTML、PDF 等)。

    172 引用 • 1546 回帖
  • 服务

    提供一个服务绝不仅仅是简单的把硬件和软件累加在一起,它包括了服务的可靠性、服务的标准化、以及对服务的监控、维护、技术支持等。

    41 引用 • 24 回帖 • 2 关注
  • 星云链

    星云链是一个开源公链,业内简单的将其称为区块链上的谷歌。其实它不仅仅是区块链搜索引擎,一个公链的所有功能,它基本都有,比如你可以用它来开发部署你的去中心化的 APP,你可以在上面编写智能合约,发送交易等等。3 分钟快速接入星云链 (NAS) 测试网

    3 引用 • 16 回帖
  • Flutter

    Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面。 Flutter 可以与现有的代码一起工作,它正在被越来越多的开发者和组织使用,并且 Flutter 是完全免费、开源的。

    39 引用 • 92 回帖 • 10 关注
  • Eclipse

    Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。

    76 引用 • 258 回帖 • 632 关注
  • golang

    Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。

    500 引用 • 1396 回帖 • 252 关注
  • Windows

    Microsoft Windows 是美国微软公司研发的一套操作系统,它问世于 1985 年,起初仅仅是 Microsoft-DOS 模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统。

    232 引用 • 484 回帖
  • LeetCode

    LeetCode(力扣)是一个全球极客挚爱的高质量技术成长平台,想要学习和提升专业能力从这里开始,充足技术干货等你来啃,轻松拿下 Dream Offer!

    209 引用 • 72 回帖
  • Notion

    Notion - The all-in-one workspace for your notes, tasks, wikis, and databases.

    10 引用 • 77 回帖
  • SVN

    SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代 CVS。

    29 引用 • 98 回帖 • 696 关注
  • Lute

    Lute 是一款结构化的 Markdown 引擎,支持 Go 和 JavaScript。

    29 引用 • 202 回帖 • 37 关注
  • Mobi.css

    Mobi.css is a lightweight, flexible CSS framework that focus on mobile.

    1 引用 • 6 回帖 • 776 关注
  • RabbitMQ

    RabbitMQ 是一个开源的 AMQP 实现,服务器端用 Erlang 语言编写,支持多种语言客户端,如:Python、Ruby、.NET、Java、C、PHP、ActionScript 等。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

    49 引用 • 60 回帖 • 347 关注
  • 创业

    你比 99% 的人都优秀么?

    81 引用 • 1395 回帖 • 1 关注
  • 微服务

    微服务架构是一种架构模式,它提倡将单一应用划分成一组小的服务。服务之间互相协调,互相配合,为用户提供最终价值。每个服务运行在独立的进程中。服务于服务之间才用轻量级的通信机制互相沟通。每个服务都围绕着具体业务构建,能够被独立的部署。

    96 引用 • 155 回帖
  • OpenCV
    15 引用 • 36 回帖
  • 生活

    生活是指人类生存过程中的各项活动的总和,范畴较广,一般指为幸福的意义而存在。生活实际上是对人生的一种诠释。生活包括人类在社会中与自己息息相关的日常活动和心理影射。

    230 引用 • 1432 回帖
  • DevOps

    DevOps(Development 和 Operations 的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

    59 引用 • 25 回帖
  • OpenStack

    OpenStack 是一个云操作系统,通过数据中心可控制大型的计算、存储、网络等资源池。所有的管理通过前端界面管理员就可以完成,同样也可以通过 Web 接口让最终用户部署资源。

    10 引用 • 4 关注
  • Oracle

    Oracle(甲骨文)公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989 年正式进入中国市场。2013 年,甲骨文已超越 IBM,成为继 Microsoft 后全球第二大软件公司。

    107 引用 • 127 回帖 • 340 关注
  • 工具

    子曰:“工欲善其事,必先利其器。”

    302 引用 • 772 回帖
  • Outlook
    1 引用 • 5 回帖
  • 一些有用的避坑指南。

    69 引用 • 93 回帖
  • JVM

    JVM(Java Virtual Machine)Java 虚拟机是一个微型操作系统,有自己的硬件构架体系,还有相应的指令系统。能够识别 Java 独特的 .class 文件(字节码),能够将这些文件中的信息读取出来,使得 Java 程序只需要生成 Java 虚拟机上的字节码后就能在不同操作系统平台上进行运行。

    180 引用 • 120 回帖 • 2 关注
  • frp

    frp 是一个可用于内网穿透的高性能的反向代理应用,支持 TCP、UDP、 HTTP 和 HTTPS 协议。

    17 引用 • 7 回帖 • 3 关注
  • Pipe

    Pipe 是一款小而美的开源博客平台。Pipe 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    134 引用 • 1128 回帖 • 110 关注
  • 房星科技

    房星网,我们不和没有钱的程序员谈理想,我们要让程序员又有理想又有钱。我们有雄厚的房地产行业线下资源,遍布昆明全城的 100 家门店、四千地产经纪人是我们坚实的后盾。

    6 引用 • 141 回帖 • 616 关注