对于那些开源应用发现漏洞感觉还容易理解,而对于那些已经编译过的产品,除开使用过程中被动发现一些漏洞之外,那些主动分析漏洞的人是不是特别牛(主要是想知道他们是一个什么套路),毕竟常用的系统或应用也不断在完善,要找漏洞得分析多少编译过的代码或者是逻辑这些?

目前像阿里云,奇安等平台都有提供一些安全漏洞方面的信息,但是要不只有简单的信息,要不就只提供了本平台的修复部方法不具备可操作性! 有公开能查到系统和主流应用的漏洞信息及其详细复现方法,修复方法的渠道吗?

目前漏洞扫描和利用的工具很多感觉他们都很牛, 所以想从学术方面了解漏洞相关知识(发现,复现和修复).

我觉得许多漏洞大概不是分析出来的,而是写漏洞的人漏出来的吧?有些漏洞是有些员工故意埋的,有些是写程序过程中搬别人代码过来而提供代码的故意在其中做了手脚。漏洞发现,复现和修复,只能密切跟踪安全网站的一线漏洞信息啊,没谁有本事一网打尽靠自己发现,花钱买的是第一手的,不花钱就只能用二手信息了。

软件大部分不是从 0 开发的,会用到各种各样的三方包,这些包是开源的,只要能从编译后的软件中分析到三方依赖,那么这部分漏洞就很容易统计到。我觉得外行看热闹,你如果真的从业一段时间,其实很容易积累一些工具和思路的。

逆向当然厉害,不过很多系统也不是一上来就白手起家从头开始,比如针对操作系统,核心思想就是找攻击面提权,拿下 root 权限之后,其他工作主要还是依靠系统本身的一些 utility 去完成;针对沙盒,核心思想就是找攻击面逃逸;一般而言,越到底层难度越大。

这个涉及很多方面啊,网站的注入,数据库注入,二进制文件运行时内存修改溢出,每个方向都不一样需要的知识也不一样大部分人查下 exploit db 之类的网站就能利用漏洞,挖洞就是另外一回事了

#1开源项目:?许多开源项目漏洞还真不是故意埋的。。

并非如此。在此举最简单的栈溢出漏洞为例子,函数变量存放在栈中,一层摞着一层,由栈先进先出的构造,新调用的函数的变量如果没有检查长度,超出了预先分配的栈空间,就会覆盖上一个调用它的函数的一部分变量空间,这样就导致了溢出漏洞的产生。这并非是人为故意,而是新函数接收到的变量不可控产生的结果。

说到漏洞分析,推荐题主看一下 0day 安全这本书,上面很详细地介绍了初学漏洞需要的知识

一些些吧,有些是故意的,有些是不小心的。

你指的故意留下以达到操控目的的被称为后门 backdoor ,并非叫漏洞。

谁也不会承认自己埋啊。我举个例说,假设有位微软的员工在公司不知情下在一段代码上做了漏洞,后来该漏洞被发现了,你猜他会不会承认是自己故意埋的?那算是 BACKDOOR 还是漏洞?除非该代码写得非常明显,但我想会埋的人都不会这么笨吧。

#8你要这么说的话那确实没办法了。。毕竟这玩意只有自己心里清楚,别人都不可能知道。但像这种公开披露的漏洞,一般来说都不会是自己露出来的,自己写了个漏洞然后自己露出来,不至于。。

修复漏洞主要还是靠更新和修改配置文件吧,log4j 那个漏洞不就是影响深远吗,好多年前写的一个可以随时修改配置的功能,没想到会执行未来新增的高危指令以后这种问题会越来越多的,新功能还得考虑老功能的关联,稍有不慎就成 bug

搜 google zero

" ... 只能密切跟踪安全网站的一线漏洞信息啊 ... " 就是想知道那个地方提供的信息相对完善,并不是说一定要第一时间最新的漏洞信息. 在我了解的渠道中基本没有谁介绍复现方法的和修复方法. " ... 而是写漏洞的人漏出来的吧 ..." 有这种可能 谢谢!

而对于那些已经编译过的产品的漏洞发现 并不像你想的那么难,开源软件的漏洞挖掘也没有你以为的 看源代码那么简单, 有几个问题会导致这个情况, 1) 代码量太大,即使开源软件也不太可能一行行去看代码, 往往会带有一定目的性 2) 肉眼可见的漏洞往往是少数,这种漏洞基本上通过一些 代码质量工具 就能有提示, 3) 更多的需要你对 计算机\目标平台\目标软件业务 有或多或少的了解, 简单说既要全局又要细节, 思维模式上和正向开发的思维是不太一样, -- 需要反汇编去分析吗?某些时候需求,某些时候也确实是要分析一些详细逻辑的,但会带有一定的针对性,下面说-- 有哪些套路: a) fuzz, 这是现在漏洞发掘主要的手段之一, b) 总结历史一些漏洞出现的 pattern ,再依据这些 pattern 或依据人工或依靠工具 去发现类似的漏洞, c) 某些时候也可能要开一些脑动, 整体就是,搜索空间无比巨大, 要用一些方式来提高效率漏洞的详细情况,产品方一般是不会说的,一方面,有确实延缓传播的意图,二一方面有法律法规上的限制,如果只是修复,看产品商就可以了一些历史的有利用价值、有启发性、有意思的漏洞, 你 google 一下还是有的,应该不难比较新的,或者比较鸡肋的,利用有难度的(很多漏洞只在理论上存在利用可能),影响范围小的 可能就没有了

" ... 漏洞的详细情况,产品方一般是不会说的,一方面,有确实延缓传播的意图,二一方面有法律法规上的限制,如果只是修复,看产品商就可以了 ..." 不知道你这里产品是指安全平台产品还是出漏洞的产品本身, 如果都不说为什么还有那么多红黑出的漏洞工具 (红的, 扫描提供防御; 黑的,扫描后提供利用工具) 并且都还是实时更新的,因为这些漏洞不可能都是一个团队发现的. 并且不是所有漏洞发现后都会通知产品商,加之产品商修复漏洞能力也是参差不齐的这中间空窗期可能会很长,所以

在乌云还在的时候 当时是真的能学到一些骚操作来 ri 站 后面乌云因为涉及到一些法律问题直接没了 现在爆出相关漏洞的情况下也不会将漏洞说的很仔细

开源软件发现漏洞大多也不是从代码上直接看出来的,好些也是先测出来漏洞,再回去查代码确认的。能一眼看出问题的代码大多都会在 review 的时候拒绝了。编译过的闭源产品,就是多一个反编译步骤,从细节线索开始,根据经验逐一推断。比如输入一串长文字,服务器进程挂了。从这个细节开始分析,一看是 segfault ,段错误。反汇编瞧瞧,缓冲区溢出。构造特定字符串,溢出篡改 eip 寄存器返回地址。这就从服务崩溃变成了任意代码执行,服务器弹个计算器。某个洞就被挖出来了。

红客黑客找漏洞肯定是有一些固定套路的,通过这些套路能更快发展漏洞。普通用户也能发展漏洞,不过效率低多了,更像是打游戏发现游戏 bug 一样

我只觉得 功能越复杂,依赖越多,风险肯定越高。特别是业务复杂赶进度时,测试很难全面