一时不知从何说起,最近开始越来越愁就业问题了,特别是这两周试着投了下日常实习,投了十几个岗好像就两三个有回复,才有机会把简历发过去(没招了,真没懂为什么,要说因为简历挂也不是呀),然后那两三个也是说着说着就没消息了
于是我开始陷入深深的怀疑 是不是我学历太差了(双非本),导致连简历都没资格被看 我一开始投的还都是SDL/SAST这类岗位,自认为和上一段实习的经历比较对口会比较好进 而且我确实也对这方面特别感兴趣,这段时间来也一直在学 如果可以,我以后也想从事这个方向的工作
开始后悔8月份的时候没去投群里学长直接内推的小红书sdl了,我那时还想着大三上学期就在学校吧,自己学学静态分析的东西沉淀,然后选了很多课,因为想大三下出去实习了,不想再像之前那样明明上班已经很累了还要天天被考勤/作业之类的琐事烦着
于是第一动摇了之前坚定不读研的想法,但还是想着,先拼尽全力试试吧,如果暑期实习没有一个好的结果的话..
今年算是经历了很多,成长蛮大的一年.
绿盟
去年12月我开始实习,是学校老师给推去绿盟的,因为刚好负责人和学校老师特别熟,缺人了就问了一声我们,我一开始纠结了蛮久,因为对于当时大二上学期的我来说 实习还是一个有点恐惧,完全不知道是什么样的东西 .因为jd写了要求会用python写东西 我还赶紧恶补了python安全开发的课程(但其实没学多少),本来都想着算了吧,自己再沉淀一下,但是在女朋友的鼓励下还是投了(因为实习的话,正好可以和女朋友租房了).约了面试之后主播也是十分紧张,开始猛猛背各种面经,但是由于是在不知道这个岗位要干嘛只能瞎背,top10也看,java也看,护网那种面经也看..然后出乎意料的是,我的面试并不像真正的面试,只是打电话让我自我介绍一下,然后给我讲了一下这个岗位是做什么的,就结束了..不超过10分钟
然后就这么踏上了实习的不归路
绿盟的工作其实并不忙,我开始焦虑这段实习对我是否有足够的提升,开始思考自己到底想往安全的那个细分方向上努力.这是我第一次特别认真的考虑这个问题.
然后那段时间一直高强度在各种安全论坛,github,博客之类的冲浪,发现自己对云安全有点兴趣,也特别认可这个方向的前景(并没有说就业前景就很好的意思),于是开始没事就看看这方面的技术,搭了k8s环境,用我偶像的metarget复现了几个云的漏洞,做了一些云的ctf题,又学了一些go的语法,买了本云安全的书….一段时间之后发现想做好云安全的话,云计算底层的很多技术得了解,容器间的通信,容器的底层实现等等,然后又开始试着跟着《自己动手写docker》开始了解一些容器的底层实现
一些当时的笔记哈哈
一些当时的上班摸鱼学习记录
还重新弄了个博客2.0专门写云的东西(现在是3.0 最开始的1.0主题十分中二,发的是一些ctf的wp,还有某些技术的总结),现在在想有没有必要把当时的文章也放回到这个博客上,每次想学些什么新的东西,就会想往博客上写来记录着
然后这种想学云安全但是又不知道具体学习路线,东学学,西学学的生活被boss直聘上的一则得物sdl工程师的实习招聘打破(我从开始实习没多久就养成了刷boss和脉脉的习惯)
我以前没听过这个,SDL是啥,我就赶紧从网上了解,越了解越觉得,这就是未来的趋势啊(然而现在主播知道其实大厂们早就开始搞了,只是一些中小厂还没有建立起这种应用安全的体系,仍然依赖传统的安全设备+安服的模式).于是我开始越来越蠢蠢欲动对着得物这个岗位,每天都看它还在不在
因为毕竟上班要去上海,第一次异地实习顾虑还是特别多的,而且女朋友也还在广州,租的房子也没到租期.但随着我对抓住这次这么好的了解,体验SDL方向工作而且算是大厂的实习机会的欲望越来越强烈,我还是和家人,女朋友提出了想去上海的想法
所幸女朋友最后也是支持了我的决定,我就下定决心投了简历,然后就约面了(从现在的视角看,这狗运也是无敌了,我后面不可能再遇到这样只投了一个岗位,然后一投就约面的机会了应该)
得物
得物的面试比我想的要简单一下,因为刚好有学长面完这个岗,我大概知道会问跟代码审计相关的东西,于是我猛猛恶补了一下java各种框架的一些审计思路(之前没接触过),自己总结了一些面经.还问了一些top10的东西,所幸大部分都答上来了,然后就在我面完紧张的等了一两个小时还没有结果的时候,我预感自己寄了,因为听说得物效率巨高,基本一两个小时内就会oc. 结果在面试3个小时后,在床上躺着刷视频时,hr突然一个电话过来oc了,谈入职时间和工资的事,我直接接下了,虽然后续说要下周就到岗.然后我就忙着各种退租,搬东西,过去找房子..
得物的工作我花了一周就逐渐开始上手,慢慢就没那么饱和了,漏洞积压的多的时候,才会要花一天中大部分的时间去和开发沟通,排期;其他时候只需要处理下SAST的告警而已,如果告警都处理完了,那么我就没事了
于是我开始给自己找点东西研究,想尽可能地多学点东西,毕竟这是一个少有的在互联网甲方里了解各种各样工作的机会,于是我开始翻各种文档,知识库.然后看到我前面负责coverSAST的实习生,他们有的会尝试去给sast优化规则,也就是有些误报出现的多的话,就把它加到清洗函数的规则里,下次就不会再有这个函数的误报了
然后我就开始尝试做这个工作,询问mentor后,他给我一份SAST(我们当时主要用的是腾讯的Xcheck)的规则文档
然而我在添加规则的那段时间逐渐发现一个问题,基于规则匹配sink点和sanitize清洗函数的误点分析在大企业的环境中难免产生大量误报,因为写代码的人很多,大家引入的库不同(引入的库代码SAST一般无法获得),且函数的命名规范也不同 这就导致了基于正则的匹配出一样的结果的两个函数,他们具体的实现很可能差很多,而且过滤的实现也千差万别,有一些确实是可以抵御这一类的攻击,比如用严格的白名单等等;有一些我又只能说只能防御一些基础的常见攻击,但是稍微变体一下,换个姿势就能绕过的.然而面对这么复杂的安全场景,SAST显然不可能详细的对每一种过滤手段分别对待,也不可能透过引入的包,将引入的包的被调用函数的具体实现也拿进来分析(除非开发部门一起配合搞一个工程量很大的代码仓,将引入的代码通过某种形式在SAST分析是拉进来一起分析)
然后我就在想有没有办法可以解决这个痛点,期间有一些想法,引入ai来解决这个问题
引入ai有三个好处,
- sast不再完全依赖于规则库,有可能发现未知的(或者不在规则里的)漏洞
- 如果有一些较为简单的误报或漏报场景,运营人员不需要学习SAST那个有一定门槛的规则配置语法,直接在prompt里用自然语言定义即可
- 对于人工来说一时间不太好判断的告警可以让ai来辅助处理
期间也学习了很多SAST的大致原理,业界各种sast的实现路线,优劣等等. 因为我需要确定ai应该在静态分析的哪个过程中介入比较好
第一条路线是在静态分析的过程中嵌入LLM,类似于在中间为ai生成某种信息比传统的callgraph,CFG,DFG等图含有更多信息的图,然后利用neo4j这种图数据为ai提供一个查询的接口,ai自主利用这个含有类,函数方法,参数信息等等的图作为知识,然后操作图数据库进行具体代码片段的检索,期间可以随时回退,选择分支等等,最终挖掘出一条漏洞调用链出来或者路径上遇到某个清洗函数后判断为误报
第二条路线是在静态分析后,利用SAST的告警信息,进行缺陷代码的demo沙箱验证
也请教了做开发的学长,因为我那会对java 和go都有哪些引入外部代码的方法不是很熟,公司内部也有二方包,三方包.
(有空接着写)