学习路线:
这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成黑客大神,这个方向越往后,需要学习和掌握的东西就会越来越多以下是网络渗透需要学习的内容:
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
看到上面这段描述没? 老的技术有问题,需要新的技术来顶,此段内容来源悬镜灵脉IAST介绍
IAST检测原理
基于开发语言自身的插桩技术,在软件运行过程中采用污点传播技术跟踪用户输入数据(污点)执行流程,来检查安全漏洞。
程序插桩
程序插桩?到底啥是插桩?
插桩是一种测试程序性能、检测错误、获取程序执行信息的技术(来源IBM,及维基百科)
插桩技术(Program Instrumentation)最早由J.C. Huang 在1978年发表到IEEE的《Program Instrumentation
and Software Testing》提出的。在保证被测程序原有逻辑完整性的基础上在程序中插入一些探针(probe),即添加一些代码,获得程序的控制流和数据流信息。例如通过自动工具或手动,在函数执行前后插入读取计时器的代码,获取函数执行时间。
可见,程序插桩是一项有着悠久历史的技术,主要应用在软件测试中,其实就是我们比较熟悉的测试方法,比如我们在源代码的函数执行前打印当前时间,在函数之后再次打印时间,进而计算函数的执行时间,找出影响软件性能的函数,就是源代码级别的程序插桩的一种应用。
在安全领域最早使用程序插桩技术的,目前没有一个统一说法,2012年鸟哥编写的检测php代码安全漏洞PHP taint 0.0.1,是我知道的第一个基于程序插桩技术检测安全漏洞的工具。
都这里就没有办法继续展开了,因为每种语言的插桩都不一样,与语言自身实现关系太强,比较底层,已经大大超出笔者的认知了,逃逃逃
IAST优点
-
零成本对接功能测试流程
号称几乎零成本接入到功能测试流程,就是将IAST的agent内置到功能测试机的装机镜像中,这样搭建一个测试环境就有IAST检测能力。这是产品宣传的介绍,但实际使用时,还需要考虑
怎样保证装机覆盖度?
怎样无缝覆盖新创建的镜像,怎样检测非镜像安装的环境,怎样保证IAST运行正常
怎样保证每个测试环境所有的功能模块都是最新的?
报警处理怎么找到对应的修复人?
这些问题都是与具体的使用场景有关系,需要在实施前进行仔细思考,否则IAST对接后,无法达到理想效果,需要返工处理
-
能够覆盖全业务场景
传统动态应用安全测试(DAST)很难覆盖使用一次Token,或者有人机校验的场景,而IAST基于测试的流量,可以覆盖所有场景
-
报警误报率极低
IAST的实际检测方式与人工代码审计的流程基本一致,可以说IAST是将安全专家审计代码的流程进行了自动化,基于获得的软件内部数据流和控制流多种数据综合判定是否存在安全漏洞,误报率是比较低。
-
代码级漏洞详情
这个比较好理解,在具体检测到漏洞的代码处,可以记录问题代码的文件、行号、用户输入、函数调用栈等详细信息
-
赋能研发和测试
是最好的赋能研发、测试工程师的工具,使其具有安全专家的能力
-
降低漏洞修复成本
在研发和测试阶段检测的漏洞,研发可以及时修复,对于成本降低显而易见。
-
安全适度左移的最佳方案
安全左移被Gartner提出后,受到热捧,是符合企业软件开发的诉求,但安全怎样左移却没有一个统一标准,有些企业把安全左移的怨声载道,成倍的增加了研发的负担,将研发部和安全部搞的水火不容,是一种典型性的步子跨的太大了。而IAST的出现应该可以说,安全左移的最佳实践,
IAST缺点
-
IAST语言强相关的
IAST是基于开发语言自身提供的插桩技术进行漏洞检测,语言对插桩的支持成为IAST先决条件,并非所有开发语言都对该技术有很好的支持 ,可以确认 Java、Python、PHP、Go 应该是有插桩技术
-
IAST覆盖度依赖测试覆盖度
IAST一般是基于功能测试人员的测试流量,因此IAST漏洞检测覆盖度依赖于功能测试的覆盖度
-
对系统性能有影响
IAST的实现需要在不改变原有代码逻辑的基础上,则原代码特定位置添加检测探针,整体上增加了代码量,在系统运行时,增加额外的开销,进而影响整体性能 ,基于洞态在java语言的性能测试Java Agent | 洞态文档 (dongtai.io),100并发下,性能损耗39%(供参考,具体的性能影响,与环境依赖比较大)
-
不适合乙方工程师
IAST需要在软件环境中部署额外的agent,因此不适用乙方工程师给甲方企业做黑盒测试的场景,这种场景下,工程师无法接触到源代码或部署环境。
个人感觉IAST是比较有未来的在甲方安全测试中,如前所述,IAST有这种低误报的特性。
同时,看到有些厂商如
默认雳鉴IAST 已经能够检测逻辑漏洞了,原文"可对常见风险进行检测,且可利用专利级的检测方式,对水平越权、垂直越权等逻辑漏洞进行自动化测试"
开源网安灰盒安全测试平台- DevSecOps|IAST灰盒|灰盒测试|应用安全 (seczone.cn)也介绍"支持业务逻辑漏洞检测"
虽然目前我还没有理解他们具体怎样检测的逻辑漏洞,但相信IAST针对可以在逻辑漏洞检测方向有所突破,成为超越SAST和DAST绝对优势。
IAST是依赖于语言自身的插桩技术,因此与开发语言强相关,但看了大部分IAST产品,除开源的洞态外,基本上没有说支持啥语言,这也许就是中国网络安全产品的特色,不管用户啥环境啥场景,我的产品都行,是在不行也有0.1%能够覆盖,最终结果可想而知。在不就是我也不写清楚,想要详情请联系商务,商务左转右转,了解了到在反馈给你,然后就是每天/周跟进你是否有需求,是否需要测试,是否有计划(预算), 是否采购,让你最后买买买,你不得不删删删(联系方式)。
因此对于IAST产品的分类应该从厂商产品和语言两个方面进行比较。
给大家的福利
零基础入门
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
同时每个成长路线对应的板块都有配套的视频提供:
因篇幅有限,仅展示部分资料
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!