刚刚结束自己的求职季,在大陆和香港参加了10+场信息安全岗位的面试,行业包括互联网,交通,零售,以及金融。这边分享其中的一部分面试问题,以及一些对本科生信息安全求职有用的资源。
技术面试
1. 你刚刚自我介绍提到了校内CTF,讲一讲CSRF的攻击方法以及防御措施。
CSRF攻击的本质是利用了服务端对客户端的信任。比如用户在浏览器中成功登录网银并保持会话,这个时候黑客向用户发送一个钓鱼邮件,里面有一个按钮,超链接到bank.com/transfer?amount=10000?currency=HKD?recipient_acc=8888(一个会发送GET Request指示转账的URL)。如果用户不小心点到,银行就会直接从用户账户中转钱给黑客(因为当前会话有合法的授权)!可以通过使用Anti-Forgery Token,或者把SameSite Cookie设置为Strict模式来防御这种攻击。
追问1:Anti-Forgery Token是什么?这个token加在哪里?
Anti-Forgery Token其实就是服务端随机生成的字符串,用来确保黑客无法制作有效的Request URL欺骗用户发送出去。对于GET Request,这个token直接放在URL里即可,例如bank.com/transfer…?token=abcdefg,服务端在处理请求前先在数据库确认abcdefg是不是自己曾发出的有效令牌。如果是POST Request,token一般放在请求头栏位里。
追问2:SameSite Cookie如果设置成Strict,什么情况发送Cookie?
对于主流的浏览器,如果SameSite Cookie策略为Strict,只有用户手动在地址栏输入URL访问,或者同源跳转的时候(例如在bank.com/my_account点击按钮跳转到bank.com/transfer…),Cookie才会发送。否则服务端即使收到forged request,因为没有Cookie里的登录凭据,也不会处理这个请求。
2. 特权身份管理(PAM/PIM)的最终目的是什么?
特权身份可能有建立/修改用户账户,建立/修改ACL,绕过安全控制,更改系统及网络设定的能力。如果对特权身份的凭证不妥善管理,或者技术上管理了但是实际上无脑通过审批工单,一些最基本的安全概念,例如最小权限(Least Privilege),职责分离(Separation of Duty),仅知所需(Need to Know)根本无从谈起。另外,特权身份管理也是企业获得ISO27001认证很重要的一个要求。
(参见ISO27002, Control 8.2, Privileged Access Rights)
3. 如何确保特权身份存取器的高可用性?
由于我并没有从事过security service或者engineering,只是曾做过PIM的使用和审计,因此实话实说不知道。但是从安全监管的角度,回答了如何确保特权账户凭据的可用性。例如对firefighting和BC/DR情况急需的账户凭据采取break-glass solution,包括使用密码信封等。
4. 简单说一下Diffie-Hellman Key Exchange的原理。
(我整理了一些应用密码学相关的知识点,主要为数学原理,放在这个repo里面。面试前可以把常考的算法例如DH,RSA,DSA,EIGamal的公式过一遍,并且中英文模拟讲一讲)
5. 针对你之前所接触过的这款特权身份存取器的商用产品,谈一谈它的主要功能和特性。
6. 你对我们公司的核心业务了解吗?我们的业务有什么特殊的信息安全风险需要防范,如何控制?
这个有点属于行为问题,首先考察候选人是否做过充分的company research,并且加入了自己从信息安全角度的思考。我当时套了一些CISSP的知识点,先通过Business Impact Analysis讲出自己认为的重要业务和重要资产,然后按照STRIDE威胁建模,挑2-3个威胁具体展开,给一些控制方案。
感觉从面试官的角度,不会指望本科生真能在没有任何背景资料和项目经验的情况下说得很准确。(要是一个外人都能把公司安全政策和标准猜个大概,那还得了?)但这种开放性的问题,确实是候选人(尤其是fresh graduate)向面试官展现自己对行业趋势最基本的了解,以及analytical skills的好机会。
7. 说一个无法使用技术控制进行防范的安全风险,如何针对它设计compensating control?
虽然DLP可以防止绝大多数情况的敏感信息泄漏,但是在实际工作环境中存在物理方式的外泄风险。比如员工可能为了开会方便用未经MDM管理的个人手机对着电脑屏幕拍照,或者抄写大量信息等,这种很难通过技术控制规避。可以使用管理控制做为compensating control,例如员工安全意识培训,匿名风险报告机制。
8. 为什么公司OA工作站要求用户登录前摁下Ctrl-Alt-Del组合键?
Ctrl-Alt-Del是安全注意键,可以防止用户在假冒的Windows界面输入密码。在摁下的时候,内核会暂时挂起所有其它程序,Windows登录界面会以最大优先级显示,确保用户是在向Winlogon.exe提供凭据。
(网上的一些回答,例如确定用户是真人,确保物理交互这些是错误的,Ctrl-Alt-Del的keystroke其实是可以通过软件模拟出来的,例如很多远程桌面软件就可以一键发送这个组合键)
9. 讲讲你的毕业设计项目,用到了哪些应用密码学和网络安全技术?具体怎么实现的?
10. 有什么办法可以在钱包私钥丢失时恢复对钱包资金的访问?这个方法是如何平衡安全性和便利性的?
行为面试
11. 对于你之前实习时所做的一个项目,如果你回到当初,你有哪些地方可以做得更好?
12. 平常用什么方式关注信息安全领域的最新资讯?
13. 在你之前的信息安全项目中,在跟利益相关方沟通的时候有遇到什么困难吗?你是如何解决的?
14. 具体说说你怎么在几个项目同时推进的情况下分配精力。
15. 如果因为市场的原因,导致行业在1-2年内发展缓慢,你的任务变得相对轻松,但是也没那么多表现机会。你会采取什么样的方式度过这段时间?
16. 你曾经做过软件工程的项目和助研,为什么改选信息安全做为职业方向?
资源分享
- https://feei.cn/sig/:支付宝CISO吴飞飞的个人博客,针对安全合规,数据隐私,安全开发,威胁识别及感知各种信息安全子领域提供了很多面试问题,涵盖非常广。部分问题给了回答思路。
- https://github.com/d1nfinite/sec-interview:主要针对安全开发和安全研发岗位。
- CISSP/CCSP的教材:如果有考过CISSP/CCSP这类安全证书,可以简要复习下一些常见的CISSP题目。