在Trail of Bits担任区块链实习生的经历
今年早些时候,我成功完成了在Trail of Bits的实习,并获得了区块链安全分析师的全职职位。本文并非对我实习期间工作的技术性描述,而是旨在分享我作为Trail of Bits实习生的一般经验。希望通过我的经历,能够激励其他人申请Trail of Bits未来的实习机会。
我是谁?
我就读于印度RGUKT Nuzvid的计算机科学本科最后一年,这是一所三线学院。在2021年冬季加入Trail of Bits实习之前,我几乎没有行业经验,只完成过一个计算机科学项目(Monkey Interpreter,一个用Python重写的Golang实现)并参加过夺旗(CTF)比赛。我在本科第一年年底开始以用户名S3v3ru5参加CTF比赛(至今周末仍会参与)。
最初我主要专注于密码学相关挑战,这是我的强项。但到2021年8月左右,我开始参与区块链相关挑战,以获取这一热门技术的经验。我成功完成了ALLES CTF中的一个简单Solana区块链挑战,以及Ethernaut CTF中的所有以太坊区块链挑战(一个基于web3/Solidity的战争游戏)。在申请Trail of Bits实习前仅一个半月,我才开始这项工作。可见,我之前并没有太多区块链经验。
正是通过这些CTF,我熟悉了Trail of Bits。我总是在参加的CTF赞助商部分看到Trail of Bits,还记得在CSAW决赛中解决过他们提出的一个挑战。我经常参考(至今仍会)Trail of Bits的CTF指南和博客文章,尤其是“ECDSA: Handle with Care”。
申请实习
2021年底,我开始寻找网络安全实习,主要关注密码学(我的强项)和区块链(我最新的兴趣领域)。很少有实习既符合我的兴趣,又接受一个除参加CTF外无经验、项目不多的本科生。但我记得Trail of Bits是一家顶尖网络安全研究和咨询公司,重视CTF,强调自学,并给予人们机会。
我决定查看Trail of Bits的开放职位,发现了冬季实习计划。这些实习生在导师指导下参与Trail of Bits项目,甚至自己的安全相关项目。实习带薪,在寒假进行,为学生和新安全工程师提供真实行业经验,并为简历撰写出版物的机会。Trail of Bits的实习甚至可能带来全职offer。
申请时我没有进行任何项目,因此决定申请几个感兴趣的Trail of Bits项目。首先,我申请了两个能让我获得更多区块链技术经验的项目:Manticore(一个由Trail of Bits开发的符号执行工具,用于分析以太坊智能合约和Linux ELF二进制文件)和一个研究Solana区块链的项目。以太坊和Solana都是我技术上熟悉的区块链,因此我认为这些项目很合适。但后来我决定申请Tealer,一个用于分析Algorand区块链中类似汇编语言Teal代码的静态分析器。尽管我没有静态分析或Algorand区块链的经验,但Tealer是一个相对较小且新的项目:我知道可以轻松阅读源代码入门,且这项工作可以为未来工作奠定基础。最后,所有三个项目的申请程序相同,所以我心想“为什么不呢?”
我被邀请参加一个初步的30分钟电话筛选,讨论Manticore和Tealer。这是我的第一次面试,有些紧张,但与我面试的Trail of Bits工程师Felipe Manzano(后来成为我的导师之一)让这次经历愉快且无压力。感觉更像与朋友随意交谈工作和我的经验及兴趣。之后,我们又进行了五分钟的通话,讨论实习开始日期、工作地点和其他入职信息。当天晚些时候我收到了offer:我被选中参与Tealer项目,这个我曾犹豫申请的项目。
我对这次面试过程感到惊讶。它完全不同于我许多朋友在其他公司的面试经历。我的面试轻松,且在各方面都优于大多数实习职位。
准备实习
准备第一次实习时,我意识到我不熟悉许多将使用的工具和概念。例如,我没有使用过Algorand区块链或静态分析工具,对Git或GitHub也不太熟练。我担心如果不在实习开始前努力学习这些工具和概念,我会失败。
我的实习原定于2021年12月13日开始,因此我在12月1日开始准备。在12月的前10天,我阅读了各种资源学习静态分析、Algorand区块链、Git和GitHub。甚至在实习开始前,我就通过比较开发者文档发现Tealer解析Teal代码的问题,看到了准备的结果!
实习期间
由于开始日期前的充分准备,我能够在第一天就开始Tealer的工作。实习期间,我完成了以下任务:
- 修复了Tealer中的Teal代码解析问题
- 识别并修复了CFG构建中的错误
- 向Tealer添加了三个新的漏洞检测器和三个新的打印机
- 为Tealer的大部分代码添加了文档,使其更易于阅读和理解
我非常喜欢Tealer的工作,整个实习是一次极好的经历。我的所有工作都开放供审查,并在批准后合并。每当我遇到困难时,我都会得到非常好的反馈和帮助。我能够参与关于该工具的积极讨论。并且由于实习表现获得全职offer,让我的经历更加完美。
提示与心得
我想为未来的实习生提供一些建议,这些是我希望实习前听到的。既然我有Trail of Bits实习的第一手经验,我可以谈谈这些建议的真实性。
- 如果你不符合实习的所有要求,没关系。申请没有错。我曾犹豫申请Tealer,但最终结果非常好。
- 你不必知道申请实习所需的一切。实习的目的是获得经验和学习新事物。此外,雇主不寻找已经知道一切的人(没有人知道一切),而是寻找如果给予足够时间能够学习并获得所需知识的人。
- 有疑问时,始终询问并接受建议。
- 始终向导师寻求帮助。你不必自己解决一切,也没有人期望你这样做。导师更有经验,知识更丰富,并在那里帮助他们的实习生。
- 对于非英语母语者,如我,如果不流利,不要压力。只要同事能理解你想沟通的内容,不非常流利或犯错误没关系。当然,从长远来看提高沟通技巧是个好主意,但绝不要让当前的英语水平阻止你申请实习。
为什么申请Trail of Bits实习?
我对在Trail of Bits实习的经历赞不绝口。从无压力的面试过程,到参与项目积极讨论的能力,到工作的直接合并,这是一次伟大的经历。简而言之,我是实习生,但感觉像全职员工。以下是我实习的一些亮点:
- 我有自由以我想要的方式处理工具。只要我想做的事情改进了工具并朝着目标努力,我从未被告诉不要做某事。
- 我对工作时间和时长没有任何限制。有些日子我在项目上进展不大,就像我开始处理新事物时通常发生的那样,但我有自由以自己的节奏工作。
- 最后,我实习的最大亮点是Trail of Bits CEO Dan在Slack上发送了一条小消息赞赏我的工作。读其他实习生的类似故事时,我不认为我会这样感觉,但我真的感到自豪。我仍然记得向一些朋友展示那条消息。
衷心感谢
我要感谢Felipe Manzano和Josselin Feist给我项目的自由,并使我的第一次实习成为非凡的学习经历。同时,感谢Trail of Bits在我学业结束后提供全职加入公司的机会。这次实习不能再好了,我期望在全职职位上有类似的经历。
写这篇博客时我想改变的一件事是使用“我”这个词。使用“我”让这经历感觉只是我的。这不是真的:这故事可能很容易是你的。确保关注Trail of Bits的下一个开放实习,拥有你自己的非凡经历。
如果你喜欢这篇文章,请分享: Twitter LinkedIn GitHub Mastodon Hacker News