时间过的真快,转眼已经实习两个月了。今天上午已经把电脑,屏幕和工牌都归还了,下午也没什么事情可干,简单记录一下这次实习经历吧。

面试过程

因为平时脉脉看的比较多所以对阿里的印象不是很好,而且感觉阿里都是写 java 的,而我并不是很想 java,因此在找实习时海投了一个 c++ 开发岗,但是一直拖着没做笔试,所以应该一直卡在笔试流程。直到 5.14 和飞神的一次聊天时飞神推荐了这个部门,于是请飞神给帮忙内推了一下。

5.19 一面 面试官是小组的主管,之前蓝莲花的师傅,整体面试体验很好,更类似一个交流的感觉,而不是像有些面试一样准备了一连串问题来让你回答。主要讲了一下 Handle 项目中发现的两个问题,以及一些 pwn 相关的问题。因为对虚拟化不是特别了解所以有两个虚拟化安全相关的问题没答上来,一个是 ept(extend page table)后来问秋豪得知这个 ept 是用于二层虚拟化中的,虚拟机以为的物理地址其实对 host 来说还是进程空间中的虚拟地址,所以还需要在翻译一次得到真实的虚拟页表。还有一个 sgx 我没了解过,后来搜了一下好像是 intel 提供的一种安全解决方案。 也问了一些 C++s 相关知识点,比如 malloc/free 和 new/delete 的区别。直接背八股文后面试官问我是不是之前准备过 hh,这种八股文必然会准备的啊。还被吐槽我看的答案不够好 hh

5.24 二面 二面是部门主管,没有问基础问题,简单问了一下漏洞利用原理和漏洞缓解措施。有一个问题是对于 uaf 这种堆漏洞知不知道什么缓解措施,我说了 ASAN 但是这显然不是面试官想要的答案,面试官给了两个思路:分成不同的堆,延迟 free。这样就可以大大增加 malloc/free 时对堆上结构的预测难度了,甚至只能是爆破了。想来这应该也算一种随机算法吧 hh 应该属于 Sherwood 类型。 交流得知面试官原来是在 Intel 的,而且 Intel 的 cet 就是他当年参与实现的。面试官也认为等到 cet 真正普及之后 rop 利用可能就不再存在了,随着各种漏洞缓解措施的应用,以后可能只会存在逻辑漏洞了。

5.28 hr 面 面试体验很好,一共面了 20 分钟,hr 没有问诸如 “你最后悔的一件事是什么”, “你最大的缺点/优点是什么”之类的问题。大概问了以下问题 简单介绍一下自己 本科 ctf 比赛一些问题 有没有自己很佩服的大佬(kirin yyds 简单介绍一下 handle 项目和自己的贡献 有没有面其他的公司,如华为腾讯(我说面了拿到 offer 之后竟然没有问会选择哪家。。。有点奇怪。。。 家乡是哪里的,之后工作地点有没有什么考虑 对阿里的印象是什么(夸了一通杭州和淘宝 hh

hr 面完之后会收到意向书,确认之后流程就暂时告一段落了,如果确定了入职时间就和面试官/hr联系请他们开始后面的流程(6.3)。 流程开始后会有 hr 电话联系实习生做体检(6.4),如果当地有爱康国宾的话就按照 hr 的安排直接去体检就行,没有的话可以选择去二甲级及以上医院进行体检,hr 会将检查项目通过短信告知。 我是在爱康国宾体检的(6.9),第二天 hr 那边就可以看到体检结果了。体检通过之后 hr 就会约定入职时间(阿里云的入职时间是每周四,我定的是 6.24)并发 offer(6.11),自己录入各种基本信息,取花名,录入工牌照,这些信息需要等 hr 审核,审核通过之后 hr 会联系实习生签署电子合同,并询问是否需要暂住宾馆(6.18)。签署完电子合同之后等待入职即可。

实习工作

从 6.24 到 8.27 一共实习了 9 周。

因为担心自己可能实习不了太久会被叫回学校所以在确认去实习后就先看了一些 SGX 相关的背景知识。

入职时间是 6.24。虽然我们部门在 efc,但是实习生入职都需要在西溪园区办理。领了工牌和笔记本 (M1 Macbook Pro, 16+512) 后可以坐亲橙巴士直接到 EFC 楼下。师兄接我上楼后先是带我认识了一下组里的其他人,然后带我在 EFC 楼里转了转。然后和我聊了一下之后的工作规划。主要就是先学习一些 Intel SGX 相关的背景知识,然后实现一些业务上的需求。

第一周压力还是比较大的,主要是学习 SGX 相关的背景知识。第一周的产出就是分析 SGX DCAP 中的远程证明 Sample Code。并输出了一篇文档。至此对 Intel SGX 的相关背景知识也算是有了大概的了解。

第二周做的事情比较杂,一方面继续学习 SGX 相关知识,一方面看一下 tpm 相关的代码。

第三周开始有开发任务了。一个基于 SGX 技术的应用,主体代码开发大概用了 3 周的时间,总代码量应该有 8k 左右吧。通过这个项目学到了很多新工具的使用

  • SGX Enclave 开发
  • gRPC server 开发
  • gtest/glog/gflags
  • grpcurl
  • bazel

一个开发任务完成之后给了我第二个任务:实现一个检测 sql 语句是否符合安全规则的模块。这个任务主要可以分成三个部分

  • 实现一个 sql 语句的语法解析器 (parser)
  • 实现过滤规则
  • 将整个模块适配到 Enclave 中运行

将 SQLite 自带的 parser 提取出来做语法解析,SQLite 中的 parser 是由 Lemon 通过解析语法文件自动生成的,因此可以通过修改语法文件添加过滤接口。因为生成的 parser 是纯 c 实现的,所以适配到 Enclave 中还是比较简单的。不过因为实现过滤规则部分用 C++ 比较方便(有很多字符串处理的工作)。因此也做了 C++ 适配,主要思路就是用 SGX SDK 的 C++ 库,这样编译得到的静态库在链接到 Enclave 中代码时就不会报错。

第二个任务除了具体实现过滤规则部分都完成了,算是把整个框架搭起来了。不过因为要开学了所以也没时间继续做了。

第 8 周得知第 9 周就要转正答辩了,于是开始准备答辩的 ppt:

  • 简单介绍了一下自己的背景
    • 学校/比赛/项目
  • 重点介绍自己实习期间做的工作
    • 两个任务
    • 使用 STAR 原则
  • 总结一下实习的收获

第一版 PPT 给主管看了之后建议我不要讲太多实现的细节,要讲清楚任务的背景,自己实现的过程,以及最后的成果(也就是 STAR 原则)。

做完 PPT 后自己也练了好几遍。

答辩感觉还是挺顺利的,现在还在等结果。

我对杭州的印象

杭州的七八月份是真的热,令我十分想念哈尔滨的夏天。这边雨天也很多,经常能连续下一周的雨。还经历了一次台风,不过公司这边似乎没啥影响。看新闻感觉还挺严重的,当时挺多火车都停运了,而我正好回家了,吓得我赶紧改签提前回了杭州,现在回看是虚惊一场。

一些其他事情

  • 回了三趟家,从杭州坐高铁回家简直太方便了
  • 和磊爷吃了顿饭
  • 去了两趟西湖:天都很热,人都很多
  • 做了飞秒手术:不用戴眼镜的感觉真的是太好了
  • 买了个 AirPods Pro:香
  • 买了个 Xbox Series S:回家应该就能拿到了。地平线,我来辣!

实习赚的钱貌似都花掉了 hh,等这个月发工资了给爸妈也买点东西。

参考