作为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实习甚至可能获得全职工作机会。
申请时我没有进行任何项目,因此决定申请几个看起来有趣的Trail of Bits可用项目。首先,我申请了两个能让我获得更多区块链技术经验的项目:Manticore(Trail of Bits开发的用于分析以太坊智能合约和Linux ELF二进制文件的符号执行工具)和一个研究Solana区块链的项目。以太坊和Solana都是我技术上熟悉的区块链,因此我认为这些项目很合适。但后来我决定申请参与Tealer的工作,这是一个用于分析Algorand区块链中类似汇编语言Teal代码的静态分析器。尽管我没有静态分析或Algorand区块链的经验,但Tealer是一个相对较小且新的项目:我知道可以轻松阅读源代码入门,并且在这个项目上的工作可以为未来工作奠定基础。最后,所有三个项目的申请程序相同,所以我想"为什么不呢?"
我受邀参加了一个初步的30分钟电话筛选,讨论Manticore和Tealer。这是我的第一次面试,有点紧张,但与我面试的Trail of Bits工程师Felipe Manzano(后来成为我的导师之一)让这次经历愉快且无压力。感觉更像是一次与朋友关于工作和我的经验及兴趣的随意交谈。之后,我们又进行了一次五分钟的通话,讨论实习开始日期、工作地点和其他入职信息。当天晚些时候我收到了录用通知:我被选中参与Tealer项目,这个我原本犹豫是否申请的项目。
我对这个面试过程感到惊讶。它完全不同于我许多朋友在其他公司的面试经历。我的面试很容易,在各方面都比大多数实习面试更好。
为实习做准备
在准备第一次实习时,我意识到我对将要使用的许多工具和概念不熟悉。例如,我没有使用过Algorand区块链或静态分析工具,对Git或GitHub也不是很熟练。我担心如果不在实习开始前努力学习和掌握这些工具和概念,我可能会在实习中失败。
我的实习原定于2021年12月13日开始,因此我在12月1日开始准备。在12月的前10天,我阅读了各种资源来学习静态分析、Algorand区块链、Git和GitHub。甚至在实习开始前,当我发现Tealer解析Teal代码与开发文档相比存在问题时,我就看到了准备的成果!
实习期间
由于在开始日期前做了充分准备,我能够在第一天就开始Tealer的工作。在实习期间,我完成了以下工作:
- 修复了Tealer中的Teal代码解析问题
- 识别并修复了CFG构建中的错误
- 向Tealer添加了三个新的漏洞检测器和三个新的打印机
- 为Tealer的大部分代码添加了文档,使其更易于阅读和理解
我非常喜欢在Tealer上工作,整个实习是一次极好的经历。我所有的工作都开放供审查,并在批准后合并。每当我遇到困难时,都能得到很好的反馈和帮助。我能够参与关于该工具的积极讨论。并且因为实习期间的表现获得全职工作机会让我的经历更加美好。
提示与心得
我想给未来的实习生提供一些建议,这些是我希望在实习前听到的。既然我有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