在解答“安全漏洞是如何被发现的?”这个问题之前,我们先要弄清楚一个概念“安全漏洞”是什么?安全漏洞是指软件、硬件或者系统的一种设计缺陷,使攻击者可以实现设计者预期意外的某些非法操作,进而达到破坏系统运行或者危害用户的目的。比如围墙下的狗洞做得太大,让小偷可以避开监控偷偷钻进来,这就是一个漏洞。

但是缺陷并不一定是漏洞。还是刚刚这个狗洞,如果一开始做的太小了,过两年之后狗都长大了,不能钻过这个狗洞了,所以这个狗洞只好废弃,就不能称作漏洞了,只能说是一个“缺陷”

如果一个缺陷只是影响系统运行,没有达到危害系统安全的程度,一般只称为“bug”,而漏洞的英文名通常是vulnerability(脆弱点,或者说脆弱性)

黑客利用漏洞来搞事情,并不一定用的是“未知漏洞”有可能用的是“已知漏洞”,比方说他知道某个老版本的软件有一个某漏洞,结果一看有个公司正好在用这个版本的软件,还没打补丁,那他就可能利用这个漏洞。

下面分别来说说“如何发现未知漏洞”和“如何发现已知漏洞”

如何发现未知漏洞?

方法一:源代码分析

顾名思义,这种方法需要源代码,但是不一定要靠人的肉眼来一段一段看代码,有很多自动化的方法。

简单来说,就是通过大量对已知的安全漏洞的研究,分析出漏洞产生的原理、模式和常见的代码规律,形成一个知识库,之后再利用这个知识库,对新开发的软件或者系统的源代码进行自动检测,从中发现潜在的未知漏洞。

方法二:人工代码分析

这是系统专家或代码高手常用的“挖洞”方法。这些人往往精通某个特定的系统或软件,如Windows、Android、iOS、web建站系统、常用软件等,或者精通某一类编程语言,如VB、C、C++、Java等,能直接通过肉眼找出安全漏洞,有源代码就看源代码,没有源代码就看反编译的代码。

不过,这种挖洞方法过于依赖高手的存在,往往具有一定的偶然性,难以“量产”。在企业级应用中有很大的局限性。

方法三:恶意程序分析

这是安全分析人员常用的挖洞方法,用来发现别人已经知道并且在用,但是自己还不知道的漏洞。

当安全分析人员捕获到某些新型木马病毒样本时,就会将它们放入一个隔离的虚拟环境中运行,以观察这些程序的活动和行为

如果某个木马病毒在攻击过程中利用的是一个或者几个新型漏洞,就会在这种分析中显现出来,并被安全分析人员捕获。

不过这种方法实际操作起来也不那么容易,毕竟全球每天都有大量新的木马病毒诞生,要从中找出几个特殊的样本,犹如大海捞针。

方法四:模糊测试分析

为了保证软件系统的稳定性和健壮性,测试人员往往会使用人工或自动化的方法对软件和系统进行模糊测试或者叫崩溃测试。比如手动在软件界面中随意单击,或向软件输入各种烂七八糟的数据。如果这些行为引起了软件的崩溃,如闪退、显示异常等,就说明软件的编写是有缺陷的。而每一个缺陷的背后都有可能潜藏着一个安全漏洞。

方法五:业务流程分析

有些安全漏洞并不是由程序代码引起的,而是由于业务流程的设计本身存在安全风险(设计逻辑的漏洞)

比如,一个实名认证系统要求验证用户的身份证,但无法识别验证者使用的是否是自己的身份证,那么这个认证系统的设计实际上就是有漏洞的,就给了犯罪分子可乘之机。

在业务流程中找漏洞,需要了解业务,但不一定需要拥有高超的计算机技术,因此受到各类犯罪团伙的青睐。有时,安全人员对此类漏洞的发现能力还不及黑产团伙。

如何检测已知的安全漏洞

方法一:开源代码检测

如今,绝大多数的软件或系统都是在开源工程的基础上进行开发的。所谓开源工程,是指源代码已经公开的代码工程,它们往往是由一些大公司或开源组织发布的,如Android、Linux等。微软、谷歌、亚马逊、阿里巴巴、腾讯、华为、百度等公司都发布过大量的开源工程。

使用开源工程进行开发,难免会把开源工程本身存在的安全漏洞引入到新开发的软件或者系统中。因此,我们可以用已知的开源漏洞库区检测新开发的软件或系统的源代码,这就是源代码检测

方法二:网络扫描检测

如果一个系统或设备是联网的,那么就可以通过网络扫描的方式来检测漏洞,具体的方法是:首先根据已知漏洞库构造一些特殊的数据包,再将这些数据包发送给要检测的系统或这杯,根据系统或设备做出的反应,来判断其是否具有特定的安全漏洞。一般来说,安全扫描所用的数据包都是无害的,而攻击者则可能直接发送有害的数据包。

并非所有已知漏洞都能够进行自动化的扫描检测。同时,根据相关法律规定,进行扫描检测,首先需要得到系统或设备所有者的授权或同意。

方法三:渗透测试

渗透测试是大型企业和机构对其内部信息系统进行漏洞风险评估的一种方法。这些信息系统的构成往往比较复杂,是多种网络技术、应用和服务的综合系统。对这样的系统进行漏洞检测,需要综合多样的漏洞发现技术,而不是使用某一类单一的漏洞发现技术。

渗透测试一般由企业和机构聘请渗透测试工程师或安全服务人员在互联网上对其内部信息系统进行入侵或神呕吐,主要目的是检测纯技术型漏洞,一般不涉及员工安全意识或管理盲区等问题。

方法四:红队测试

红队测试是从实战攻防演习中衍生出来的一种安全检测方法,主要目的是使用接近真实攻击者的思维和技术手段,去发现企业和机构内部的业务系统漏洞、IT架构漏洞和安全管理盲区。这些漏洞和盲区的实际危害远远大于一般代码漏洞和纯技术型漏洞。

红队测试,就是只有攻击队,而没有防守队的一种简化形式,它比渗透测试的范围更广,更接近实战。

安全漏洞是如何被发现的?相关推荐

  1. log4j2的核弹漏洞是如何被发现的?

    开篇 上一篇文章log4j2的codeql规则我看了codeql官方的规则,然后发现了一个2020年的规则,从而推出很可能是codeql挖到的(现在哪个大佬还一个个代码看idea挖洞啊,那都是廉价安服 ...

  2. 刚输一行代码就报5次假漏洞,npm让程序员们累觉不爱

    明敏 发自 凹非寺 量子位 报道 | 公众号 QbitAI 有这样一个命令,它可以帮助开发人员分析复杂的代码.查明特定漏洞. 哇,这是什么好东西,快来试试! 然而,当你真的开始执行这个命令时,却发现这 ...

  3. C 语言漏洞最严重,PHP 最易受攻击,程序员该怎么写代码?

    [CSDN 编者按]论编程语言的安全性,作为历史最悠久的编程语言,C 仍然是开源漏洞最多的一个,但 PHP 的变化却最大,为什么 PHP 更容易受到攻击? 作者 | Michael Hollander ...

  4. 软件安全技术(概述、堆栈漏洞)总结

    文章目录 一.软件安全概述 二.内存漏洞 1.函数的栈帧 2.栈溢出漏洞基本原理 3.堆的基础知识 4.堆溢出漏洞及利用 一.软件安全概述 软件面临的三大类威胁:软件自身的安全(软件漏洞).恶意代码及 ...

  5. 周鸿祎回应EOS漏洞:不是最后一个,也不是最厉害的一个,EOS主网应延迟上线!...

    对话时间:5月30日12:30~14:30 微信社群:王峰十问智库群 对话嘉宾: 周鸿祎:360集团创始人兼CEO,知名投资人.知名创业导师,免费安全之父. 王峰:火星财经发起人,蓝港互动集团(HK. ...

  6. 【翻译】NIST IR 8151: 显著减少软件漏洞——致美国白宫科技政策办公室

    原始文章来自https://hardenedlinux.github.io/system-security/2019/07/05/NIST-IR-8151.html,翻译很生涩,但是文章内容是切中要害 ...

  7. Win10 21H2 19044+vs2019 WDK驱动开发,错误 MSB8040缓解Spectre 漏洞的库以及输出SXS.DLL的垃圾信息

    错误 MSB8040缓解Spectre 漏洞的库以及输出SXS.DLL的垃圾信息,win7关闭驱动签名.进入驱动测试模式 缓解Spectre 漏洞错误的解决 windbg狂刷输出SXS.DLL的垃圾信 ...

  8. 计算机安全漏洞是指,什么是计算机的安全漏洞

    漏洞是在硬件.软件.协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统.具体举例来说,比如在Intel Pentium芯片中存在的逻辑错误,在Sendmail ...

  9. 基于硬件方法的“熔断”和“幽灵”CPU 漏洞应对机制!

    作者 | DespacitoA 责编 | 胡巍巍 出品 | 程序人生(ID:coder_life) 随着信息技术的飞速发展,云计算.大数据.物联网.移动计算等新型应用已逐渐走进日常生活,人们一边享受信 ...

最新文章

  1. RabbitMQ学习总结(5)——发布和订阅实例详解
  2. django Forbidden
  3. LeetCode MySQL 1141. 查询近30天活跃用户数
  4. Python—语法基础(8) 分支、循环结构
  5. linux bcc_使用bcc / BPF在Linux中分析性能的7种工具
  6. Vrep脚本的执行顺序
  7. linux 安装nvm ,管理多版本nodejs
  8. for循环在c++中的用法_C ++中的循环
  9. 洛谷 3203 HNOI2010 BOUNCE 弹飞绵羊
  10. R-CNN学习笔记3:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition(SPP-net)
  11. Windows Server 2008 R2 企业版操作说明手册
  12. Unity实现多旋翼无人机的模拟飞行(物理引擎)
  13. Python实现简易搜索引擎
  14. OpenStack安装CentOS镜像:Device eth0 does not seem to be present, delaying initialization
  15. 华师大的计算机专业属于提前批吗,华东师范大学提前批上海录取线确定
  16. 去除VScode中的蓝色波浪线
  17. phpcms2008网站漏洞如何修复 远程代码写入缓存漏洞利用
  18. Ubuntu 开机慢的问题排查
  19. 美国谍梦第三至五季/全集The Americans迅雷下载
  20. java通过手机号查询联系人_在java中如何根据手机号查询号码归属地

热门文章

  1. axure内联框架和动态面板_Axure教程:如何使用动态面板?动态面板功能详解
  2. cemu有linux版本吗,cemu更新版本下载-cemu升级版本v1.16.1 最新版 - 极光下载站
  3. 案例分享,Appium+Python实现APP启动页跳转到首页!
  4. 认识Python的PPT
  5. 建筑力学与结构【4】
  6. 对于生下来只通过短视频学习的小孩来说,他还需要识字么?
  7. 文章单页-推广落地页在线制作-自动生成
  8. Cvss v2 complete documentation
  9. 输入一个字符串,判断里面有多少个单词(c语言)
  10. C#向pdf 添加水印