采访者说
施游堃,本科毕业于中国矿业大学,本科毕业时被保送至复旦读研,是实验室2019级的硕博连读生。他的主要研究方向为Web应用安全攻防技术,特别在开源软件漏洞的自动化检测和修复领域做出了重要贡献。围绕着Web应用程序的漏洞检测、评估与修复,施游堃展开了深入的研究。他以第一作者的身份在网络安全顶会USENIX Security、软件工程顶会ASE、Web领域顶会WWW上发表了三篇重要论文。此外,他的另外两项研究成果也已形成论文,并处于CCS、USENIX Security等顶级会议的投稿阶段。通过运用研究技术,他成功地在数百个开源Web应用程序中发现了超过300个未知漏洞,获得了216个CVE编号。同时,他所设计的工具原型成功地在美国国家漏洞数据库(NVD)中发现了超过1000处错误漏洞信息,并为超过750个漏洞影响版本完成了自动化的补丁迁移与部署工作。
在专业竞赛方面,施游堃与谈心、戴嘉润、许海龙等实验室同学共同组建了复旦白泽(Whitzard)战队。施游堃表现出色,携手队友们在第十三届CISCN全国大学生信息安全竞赛、第六届XCTF国际网络攻防联赛、第三届和第四届全国高校网安联赛(X-NUCA)、第三届腾讯信息安全争霸赛等数十场比赛中勇夺冠军。
在攻读博士学位期间,施游堃积极参与产学结合的实践。在实验室的支持下,他带领团队到阿里巴巴、华为等头部企业开展实践,积极参与企业与实验室的前沿合作项目,还将最新的研究成果成功应用于这些顶尖企业,有效解决了行业中的诸多关键问题和挑战。
团队参赛纪念合照(手捧冠军奖杯者为施游堃,左一)
采访内容
Q1:学长您好,我发现您的ctf比赛经历非常耀眼,您觉得这些经历对您研究生期间的研究和个人发展有什么影响或改变吗?
A1:CTF竞赛对我的帮助还是很大的,它是帮助我打开网络安全大门的“敲门砖”,也是我后来在网络安全方向展开科学研究的“启蒙老师”。这也是为数不多能够让我们实践网安技能并且提升自身技术水平的难得机会。CTF竞赛中的每道赛题的背后都是某个或某系列的漏洞利用技巧。积极参与这类竞赛,不但能够帮助扩充知识面,还能够帮助我更加深刻地体会到每种漏洞的成因。
参加CTF竞赛还能锻炼我快速学习和解决问题的能力。在竞赛中遇到一些从未涉猎过的领域是常有的事,我需要在比赛时间内快速掌握该领域的漏洞原理和利用技巧,并利用我对此类问题的理解,攻克赛题中设置的挑战问题。不仅如此,竞赛还能锻炼我的抗压能力,因为CTF竞赛的节奏通常很快,往往一天的时间就有可能左右胜负。在这种快节奏的比赛中,假如队伍面临暂时落后的局面,我们就需要具备较强的抗压能力,才能去完成逆风翻盘。
Q2:确实,这就是所谓的实践出真知,实战确实能锻炼大家,不能只是纸上谈兵。对了,学长您觉得CTF和学术研究的区别在哪里呢?咱们有没有可能从CTF竞赛中找到学术研究的idea呢?
A2:CTF竞赛与学术研究之间的区别比较大。CTF竞赛中的赛题可能是一个个散落的“知识点”,而学术研究更侧重于由一系列“知识点”组成的研究面。我们要学会该怎么从CTF竞赛中这些散落的知识点中找到启示,进行一个面的研究,来解决一类问题。以Web应用安全中经典的“反序列化漏洞”为例。在CTF竞赛中,有一类赛题曾经风靡一时,就是在PHP开发的Web应用程序中,利用一些具备“隐形反序列化”能力的函数来触发反序列化,以达成漏洞利用,这样的函数有fopen()、file_exists()等等,而这些函数,每个都能单独出一道赛题。如果仅仅停留在这些赛题的攻破上,可能距离学术研究还有一定的距离。但如果我们能深挖这些点,其实不难想到一个问题:“在PHP Web应用程序中,一共有哪些具备隐形反序列化能力的函数呢?”如果进一步探索这一问题,我们又会遇到下一个疑问:“在PHP Web应用中,具备隐形反序列化能力的函数应该具备哪些特征呢?”通过一系列的探索,我们不难发现,成因就来源于这些PHP函数在C层面的实现中调用了函数“php_var_unserialize()”,而我们可以通过一系列的程序分析手段,基于“php_var_unserialize()”来反向找出所有具备“隐形反序列化”能力的PHP函数。
如果到此为止,可能还算不上一项学术研究,因为我们仅仅是将一些散落的点串成了一条线。那么该怎样上升到一个面呢?其实我们可以继续探究下一个问题:“除了具备反序列化漏洞存在隐性触发的函数外,其它漏洞类型是否会有类似的问题呢?”顺着这一点,我们可以继续探索那些能够触发SQL注入、SSTI、XSS等诸多漏洞的“隐性函数”,从而实现将点串成线,将线聚成面的一项科学研究工作。
Q3:学长您的分析真是步步推进、很有道理,我听明白您的意思了。平时我感觉吧,读博是一个非常漫长的过程,而且博士生往往面临着需要在学术界脱颖而出的期待,同时又要面对严格的研究要求和时间压力的挑战。在这种情况下,您是怎么样应对来自科研的压力和焦虑的呢?
A3:攻读博士学位,确实需要有很强大的内心。一年都出不了成果是很经常的事。这就让我们必须要有“延迟满足”和“日拱一卒”的心态,正所谓“立志欲坚不欲锐,成功在久不在速”。我的第一篇和第二篇论文都是在读研的第三年才被录用的,在那之前的两年里,每当我看着身边的同学有成果被录用时,自己心中难免会有焦虑,担心自己到时候可能会面临能否顺利毕业的问题,还好我并没有因为焦虑而颓废,因为我始终相信破解焦虑的最好办法就是让自己充实起来,每天都有一些进步,定期回顾自己成长的过程,很快自己就能走出这些焦虑的情绪。我的第四年同样也成为了“空窗期”,但我始终坚持自己的初心,做到了心静如止水。转眼已经到了第五年,现在我对“延迟满足”也有了更深的理解,也正是直到第五年,我又一篇新作成功被Web领域的顶会WWW所收录,另外两篇新的研究成果才进入投稿流程,不过现在我已经很少会焦虑论文的投稿和录用了。科研本质上就是踏踏实实地去做研究,把观点写清楚、投出去的过程,只要有“日拱一卒”和“延迟满足”的心态且能坚持这样做下去,获得成果也只是时间问题。每每回想这一过程,我经常不禁感慨:千淘万漉虽辛苦,吹尽黄沙始到金。
Q4:真是很佩服学长您的坚持和心态,让我也想到了“咬定青山不放松,立根原在破岩中”这首诗,形容您的精神还是很贴切的。对了,您有五篇论文的写作经验,写作这块一直是困扰大家的共同难题,学长您能不能跟大家分享一下您的经验呢?
A4:我觉得吧,论文写作也是一个很有意思的环节。做一项科学研究,其实很像是做一款“产品”。初期,你要学会调研竞品,分析竞品的优劣性;中期,你要设计产品,实现产品,攻克各类竞品无法解决的难题;后期,你要学会销售,如何推销你的产品。很显然,大多数人都比较重视这一过程中的初期和中期,但后期同样很重要,因为它在很大程度上能够决定你的“产品”能不能热销。
在论文的写作过程中,你要清晰地表达出自己的观点,明确指出现有工作的缺陷、解决这些缺陷的技术挑战有哪些、你的解决思路是怎么样的。更重要的是,你要用简短的文字快速让reviewers信服,让reviewers觉得这个问题就该用这套方案这么解决,其实吧,这是个很难的事。但是,请记住,如果对自己的工作没有足够的理解,整篇文章的行文很容易写成工程文档,或者显得非常ad-hoc;而如果对同类工作没有足够的认知,很容易让整篇文章写得非常散乱,无法聚焦到某个痛点问题的解决上。
在锻炼这些能力的过程中,实验室张源教授对我进行了很多点拨和指导,我感到自己非常幸运。尤其是看老师在表述这些文字时的方法和思考问题时的角度等的时候,我受益匪浅。相信在这些方面,我还有很大的提升空间。
Q5:听了学长的话,我顿时有了醍醐灌顶的感觉,也对自己写论文开始有信心了。关于产学结合这个问题,想请教一下您认为参与校企合作对学术研究具体有哪些好处呢?个人又会从中有什么收获呢?
A5:与互联网龙头企业进行前沿技术交流和行业痛点分析,非常有助于我们进一步挖掘“高价值”的研究课题。科学研究其实很容易走入“为赋新词强说愁”的误区。在现有工作的基础上做出一些改善,哪怕发出了paper,但是它的实际价值可能却不高。比如力图解决的研究问题是否真的是现实世界中亟需解决的问题?技术提升的准确率/召回率是不是具有真实价值?如果并没切实解决实际的问题,那么研究的课题就更像是个空中楼阁,不免会让人产生失落感。
反过来说,与企业合作,共同探索、解决行业的真实痛点问题,把研究成果沉淀成论文,肯定是更好的选择。一方面,这样能真实推动行业中的某个问题,帮助它得到进一步的解决和发展,另一方面,它也能让我获得强烈的满足感和成就感。
当然,与企业合作共同探索课题,说实在的,它的难度明显更大。在这个过程中,我们不仅要调研前沿技术的适用性和利弊端,还要结合企业项目的真实情况和实际特点进行多方面的评估。同时,对我们研究原型的开发要求也更高,需要我们兼顾更多的实际案例,还要考虑到更多的实际情况。这一过程无疑更加锻炼了我们进行科学研究的能力,还能帮助我们增强分析实际项目需求、拆解需求甚至工程交付的能力。
在与企业合作的过程中,面临的压力也不容小觑。比如在与阿里合作项目的初期和中期,我几乎每天都要写代码写到凌晨,通过不断观察案例、设计解决方案、实现评估的循环迭代,力图来寻找破解难题的恰当方案。但是说实话,我其实挺享受这个过程的,因为每次自己设计的方案见效时,我都会产生很强的成就感,这能在很大程度上增强我对科研以及合作的信心。
Q6:真是功夫不负有心人啊,学长我得好好向您学习。最后,我想问一下,您觉得读博期间有什么能力是最重要的呢?
A6:我觉得应该是“自学能力”吧,我时不时会听到一些同学随口说出“没有人教我”、“我不会”这些话,但实验室其实已经为大家提供了得天独厚的学习和成长环境了,咱们实验室“千川汇海阔”,同学们“风正好扬帆”。
实验室的老师们和身边的同学们都非常优秀。如果你感到迷茫、暂时失去方向的时候,其实完全可以靠“模仿”他们来获得提升,这样就能帮助自己更快地走出迷茫。我一直觉得,求学的经历可以分成多个阶段。在高中和高中以前,以老师上课、学生听课为主,课后老师会布置作业、“强迫”我们学习进步;在大学阶段,老师仍旧会给我们授课,但课后完全靠学生个人的自学能力和自觉性;而在研究生阶段,可能并不会有老师手把手的上课教学了,课后的压力也没那么大了,但这一阶段恰恰最需要我们拥有较强的自学能力,包括学习老师们是怎么样讲述观点的、怎么样去思考问题的,还有学习身边优秀的学长学姐们是怎么样开展科研的。这个过程显然更多的是靠悟性和自驱力。如果始终抱着“等人手把手教我”的心态,是很难进步的。最后,衷心感谢大家的关心和厚爱,学术道路“路漫漫其修远兮,吾将上下而求索”。同时,学术道路也充满荆棘和坎坷,但大家不要怕,只要抱定“黄沙百战穿金甲,不破楼兰终不还”的精神,就一定会“五岭逶迤腾细浪,乌蒙磅礴走泥丸”。
后记
通过这次采访,我深刻地感受到了施游堃学长的智慧和热情。他用坚韧和毅力诠释了学术的真谛,也让我明白了在学术研究中要不断追求卓越、不断成长。在未来的日子里,我会以学长为榜样,勇敢地追求自己的梦想,尽力实现自己的初心,努力成为一位有独立思考能力和批判性思维的学者。
借此机会,我要向学长表达我最深的敬意和感谢。您的智慧将成为我学术之路上的宝贵财富。愿您在未来的道路上取得更多的成就,为学术界的发展贡献更大的力量,相信未来的你“莫愁前路无知己,天下谁人不识君?”
指导教师简介
张源,复旦大学计算机科学技术学院教授、博导,白泽战队指导老师。入选教育部青年长江学者、上海市基础研究特区计划、上海市启明星计划,获得ACM SIGSAC中国新星奖、USENIX Security杰出论文奖等荣誉。研究工作主要发表于网络安全顶会,担任IEEE S&P、ACM CCS、USENIX Security、NDSS、USENIX ATC等会议程序委员会委员,Empirical Software Engineering(EMSE)编委、软件学报专刊特邀编委。
(转载自 复旦白泽战队公众号)