security

3 posts

你的服务在不知不觉中成了帮凶:Confused Deputy 攻击是如何运作的

Confused deputy 攻击会诱骗一个拥有特权的服务,让它利用自己的权限攻击自己。以下是攻击者如何利用隐式信任发起攻击,以及为什么 capability-based security 才是解决方案。

你的服务持有一个云存储的 API key。用户发来一个请求,你的服务乖乖地把文件写了进去。文件落到了攻击者的 bucket 里,而不是你的,于是攻击者拿到了你的数据。你在不知不觉中成了帮凶。 这就是 confused deputy 攻击。攻击者自己无法向目标 bucket…

你的权限检查正在欺骗你

基于能力的安全模型用不可伪造的权限令牌取代零散的角色检查。以下是如何在 TypeScript 中实现它,同时不让代码变得难以阅读。

事后看来,每个权限漏洞都长得一样。调用栈深处的某个函数假设调用者已经检查了 。但实际上并没有。又或者新增了一个角色,然后你在 47 个文件里 grep ,祈祷自己没有漏掉任何一个。…

如果每个函数都必须获得许可,而不是默认拥有,会怎样?

大多数代码运行在 ambient authority 之下:每个函数都能触碰一切。Capability-based security 翻转了这一范式,强制函数只能接收显式、受限定范围的权限。

你的 函数可以访问数据库、支付网关和审计日志,仅仅因为它碰巧运行在同一个进程里。如果攻击者在某个 HTTP 处理程序中发现了注入漏洞,他就会继承这一切。这个函数从未主动请求这些权力,它只是凭借部署位置就默认拥有了它们。 这就是 ambient…