在Trail of Bits从事区块链实习
今年早些,我成功完成了在Trail of Bits的实习,并获得了区块链安全分析师的全职职位。
本文并非对我实习期间工作的技术性描述,而是旨在分享我作为Trail of Bits实习生的一般经验。我希望通过阅读我的经历,能够激励其他人申请Trail of Bits未来的实习机会。
首先,我将自我介绍并介绍我的技术专长背景。然后,我将解释申请和面试过程,并描述我在实习期间所做的一些工作(剧透警告:我从事了Tealer的工作,这是一个用于Algorand智能合约的静态分析器!)。最后,我将提供一些我在申请时希望知道的要点,以及我在Trail of Bits实习期间喜欢的一些事情。
我是谁?
我在印度三级学院RGUKT Nuzvid攻读计算机科学学士学位的最后一年。在2021年冬季在Trail of Bits实习之前,除了完成一个计算机科学项目(Monkey Interpreter,一个Golang实现的Python重写)和参加捕获标志(CTF)比赛外,我没有太多的行业经验。我在学士课程的第一年年底开始以用户名S3v3ru5参加CTF比赛(至今仍在周末参加)。
当我刚开始参加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提出的一个挑战。我总是参考(至今仍然)Trail of Bits的CTF指南和博客文章,尤其是“ECDSA: Handle with Care”。
申请实习
随着2021年接近尾声,我开始寻找网络安全实习,主要是那些与密码学(我的强项)和区块链(我最近的兴趣领域)相关的实习。很少有实习既与我的兴趣相关,又接受一个除了参加CTF比赛和没有完成许多项目外没有 prior 经验的学士学生。但我确实记得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(后来成为我的导师之一)使这次经历愉快且无压力。感觉更像是一次与朋友关于工作和我的经验及兴趣的随意对话。之后,我们又进行了另一个五分钟的电话,讨论实习开始日期、工作地点和其他入职信息。那天晚些时候我收到了录用通知书:我被选中从事Tealer的工作,这个项目我之前犹豫是否申请。
我对这个面试过程感到惊讶。它完全不同于我许多朋友在其他公司面试的经历。我的面试很容易,在各方面都比大多数实习职位面试更好。
准备实习
当我准备我的第一次实习时,我意识到我不熟悉我将要使用的许多工具和概念。例如,我没有使用过Algorand区块链或静态分析工具,并且我对Git或GitHub不是很熟悉。我担心如果我在实习开始前不努力学些这些工具和概念,我将在实习中失败。
我的实习原定于2021年12月13日开始,所以我在12月1日开始我的准备。在12月的头10天,我阅读了各种资源来学习静态分析、Algorand区块链、Git和GitHub。我能够看到我准备的结果,当我在Tealer的Teal代码解析与开发者文档相比发现问题时,甚至在我实习开始之前!
实习期间
由于我在开始日期前所做的准备水平,我能够在第一天开始我的Tealer工作。在实习期间,我完成了以下工作:
- 修复了Tealer中的Teal代码解析问题
- 识别并修复了CFG构建中的错误
- 向Tealer添加了三个新的漏洞检测器和三个新的打印机
- 向Tealer的大部分代码添加了文档,使其更易于阅读和理解
我真的很喜欢从事Tealer的工作,我的实习 overall 是一次极好的经历。我所有的工作都开放供审查,并在批准后合并。每当我遇到困难时,我都会收到非常好的反馈和帮助。我能够参与关于该工具的积极讨论。并且由于我在实习期间的表现获得全职职位的 offer 使我的经历 even better。
提示和要点
我想向 prospective 实习生提供一些我希望在实习前听到的提示。既然我有Trail of Bits实习的第一手经验,我可以 speak to 这些提示的真实性。
- 如果你不符合你申请的实习的所有要求,没关系。申请没有错。我犹豫是否申请从事Tealer的工作,但最终,它对我非常有效。
- 你不必知道你需要为申请的实习知道的一切。实习的重点是获得经验和学习新事物。此外,雇主不寻找已经知道一切的人(没有人知道),而是寻找如果给予足够时间能够学习并获得所需知识的人。
- 当有疑问时,总是询问并接受建议。
- 总是向你的导师寻求帮助。你不必自己弄清楚一切,也没有人期望你这样做。导师更有经验,有更多知识,并且在那里帮助他们的实习生。
- 对于那些非英语母语者,如我,如果你不流利英语,不要压力。只要你的同事能理解你试图沟通的内容,如果你不是很流利或犯错误,没关系。当然,从长远来看,提高你的沟通技巧是一个好主意,但绝不要让您当前的英语水平阻止你申请实习。
为什么申请Trail of Bits实习?
我不能说 enough good things about 我在Trail of Bits实习的经历。从无压力的面试过程,到我参与项目积极讨论的能力,到我的工作直接合并,这是一次伟大的经历。简而言之,我是一个实习生,但我觉得像一个全职员工。尽管如此,这里是我实习的一些亮点:
- 我被给予自由以我想要的方式从事该工具的工作。只要我想做的事情改进了该工具并朝着目标努力,我从未被告知不要做某事。
- 我对什么时间工作或工作多长时间没有任何限制。有些日子我在项目上无法取得太多进展,就像我通常开始从事新事物时发生的那样,但我有自由以自己的节奏工作。
- 最后,我实习的最大亮点是当Trail of Bits CEO Dan在Slack上发送一条小消息赞赏我的工作时。当我在读其他实习生的类似故事时,我不认为我会这样感觉,但我真的感到自豪。我仍然记得向一些朋友展示那条消息。
衷心感谢
我想感谢Felipe Manzano和Josselin Feist给予我对项目的自由 rein 并使我的第一次实习成为非凡的学习经历。此外,感谢Trail of Bits在我学业结束后 extended 加入公司全职的 offer。这次实习 couldn’t have been any better,并且我希望在我的全职角色中有类似的经历。
在写这篇博客文章时我想改变的一件事是使用“我”这个词。使用“我”使这感觉像这经历 solely 是我的。这不是真的:这个故事可能 easily 是你的。确保留意Trail of Bits的下一个开放实习并拥有你自己的非凡经历。
如果你喜欢这篇文章,分享它: Twitter LinkedIn GitHub Mastodon Hacker News