文章摘要
Fly.io公司的Twitter账号被钓鱼攻击入侵,原因是CEO库尔特·麦基遭遇了精心设计的钓鱼骗局。攻击之所以成功,一方面因为骗局设计巧妙,另一方面公司对Twitter安全不够重视。公司表示此次事件仅影响Twitter账号,未造成实质风险,并以幽默口吻承认管理层因年龄代沟不熟悉年轻员工的网络文化。
文章总结
标题:Kurt中招记
我们的推特账号被盗了。事发瞬间我们就察觉了,也完全清楚被盗原因。除了推特账号(和一位Fly.io员工的自尊心)外,没有任何东西受到威胁。说真的,这太离谱了。
事情是这样的:我们勇敢的CEO Kurt Mackey遭遇了钓鱼攻击。
如果这是次严重攻击,我们不会这么轻描淡写。但就这次事件而言,任何其他态度都显得虚伪。
攻击者如何得手
原因有二:一是钓鱼攻击手段高明,二是推特不在我们"认真对待事项"的范围内。
这次钓鱼攻击之所以成功,是因为它击中了我们管理团队的心理弱点:我们这群老古董完全不懂如今年轻人的梗。
几个月来,我们雇了位实习生/承包商在推特上发布各种"炫酷"开发者梗图(应该是这么叫的)。问题在于,我们根本看不懂这些梗——字面意思都懂,就是get不到笑点。
但反对这些内容时,我们要面对两大阻力: 1. 这些梗图比我们自己发的推文更受欢迎 2. 我们的Z世代员工一致认定我们太"尬",没资格评判
Kurt收到的钓鱼邮件堪称精准打击——就像一把手术刀,直指中年大叔最深的不安全感。攻击者精心设计这封邮件来触发Kurt的自动反应:"这特么是什么鬼?我们为什么要发这个?"
我们很快就发现账号被盗(ATO是"被黑"的潮人说法),因为多人同时收到邮件通知@flydotio账号的邮箱被改成了achilles19969@gmail.com。我们立即审计了1Password中的所有登录信息,并切断了最近获取过凭证的所有访问权限。
万幸的是,没人被长时间锁定。我打电话告知Kurt他被锁定的原因,五秒钟后他就意识到发生了什么。(警告:别点那个链接)
为何会成功
关键在于:这种事情怎么可能发生?
与普遍认知相反,防钓鱼不能靠训练人们不点击链接。当然要提醒他们别点!但在持续压力下,人人都会中招。有研究为证。真正的解决方案是使用防钓鱼认证技术,这就是U2F、FIDO2和Passkeys的核心理念。
Fly.io的基础设施正是这样保护的:所有系统都通过身份提供商(我们用的是Google)进行防护,并要求使用防钓鱼的多因素认证。想通过钓鱼获取日志、操作Stripe退款或查看基础设施指标?门都没有。
但推特就...几年前推特经历了一些变故,我们很多人转投Mastodon和后来Bluesky的怀抱。2023-2024年间,我们甚至觉得推特可能不会长久。
结果推特成了我们的"遗留共享账号",凭证存在1Password中,还与Z世代承包商共享†(†在此向被误认为黑客 proximate cause 的承包商致歉)。这就是为什么Kurt会从1Password获取凭证,登录members-x.com来回应alerts-x.com的邮件。
其实本可避免:虽然"x.com"确实容易被钓鱼,但1Password浏览器插件本应发现"members-x.com"并非"x.com"的合法子域名。
为何耗时这么久
攻击者立即撤销了所有令牌并设置了新2FA。虽然我们很快重置了密码,但需要X.com介入才能锁定他们,这花了约15小时(这不算慢,行业标准就这样)。
事件期间我们保持低调(仅声明"我们知情且掌握详情,这只是推特问题"),因为整体来看这次攻击相当温和:只是个拙劣的加密货币骗局,攻击者可能零收益,却给我们带来15+小时的品牌损害和安全团队的戒备。用户未受影响,账号也没被用来劫持客户。攻击者一度删光我们的推文历史——这简直是在帮我们大扫除。所以我们静待次日早晨账号恢复。
经验教训
"我最大的收获是:Kurt居然真的会看邮件。"
显然Kurt将失去代码提交权限。每位CEO终将迎来这一刻,现在轮到他了。
另外,我们终于能为下次SOC2审计提供"事件响应"的案例样本了。
也许我们会多发推特,也许加倍投入Z世代梗图。谁知道呢?现在的社交媒体太诡异了。但有一点确定:现在我们的推特登录已改用Passkeys。
(再次警告:千万别点那个页面上的任何东西)
如果有人想参与Fly.io的"空投"来"认领"我们的"代币",那个网站还在。你可以连接钱包!然后赔光所有钱。不过如果我们真搞ICO,你同样会赔光。
能想出"拥有属于你的一片天空!"这种口号,对攻击者已经是足够的惩罚了。
任何没有防钓鱼MFA或SSO身份验证的系统,终将被钓鱼。尽管嘲笑我们的倒霉遭遇吧,但请引以为戒。
评论总结
总结评论内容:
- 对CEO坦诚态度的认可
- "I'm always glad to see when companies make a heartfelt mae culpa"(jryio)
- "Great writeup, but also gotta say that's some excellent phishing"(herval)
- 关于钓鱼攻击的普遍性
- "anyone can get phished...just rely on you being busy"(stavros)
- "security audit company...said it worked every single time"(bradgessler)
- 安全措施建议
- "Use passkeys for everything"(stavros)
- "properly working password managers are important"(tgsovlerkhgsel)
- 对公司安全实践的批评
- "Every system is only as secure as its weakest link"(paxys)
- "Fly has consistently surprised me at how late they have been to doing standard stuff"(rtpg)
- 对钓鱼邮件质量的讨论
- "this doesn't strike me as a very convincing phishing attempt"(deepfriedrice)
- "pretty incredible the level of UI engineering"(grinich)
- 对公司沟通风格的批评
- "I'm tired of the 'oh lol we're just doing shit' vibes"(rtpg)
- "Yet Another 'oh lol we made a whoopsie' tone"(rtpg)
- 对事件严重性的不同看法
- "the consequences here were pretty limited"(roughly)
- "if it could happen to Kurt, it could happen to anyone"(roughly)