security

3 posts

你的服務是無心的共犯:Confused Deputy 攻擊的原理

Confused deputy 攻擊會誘騙具有高權限的服務,使其利用自身權限對自己造成傷害。以下是攻擊者如何利用隱性信任,以及為什麼 capability-based security 是解方。

你的服務持有雲端儲存空間的 API key。一名使用者發出請求,你的服務盡責地寫入一個檔案。結果檔案卻落在攻擊者的 bucket,而不是你的,現在他們擁有了你的資料。你剛剛成為了一名無心的共犯。 這就是 confused deputy 攻擊。攻擊者本身無法寫入目標…

你的權限檢查正在欺騙你

Capability-based security 用不可偽造的權限 token 取代散落各處的 role 檢查。以下是如何在 TypeScript 中實作它,同時不讓你的程式碼變得難以閱讀。

事後來看,每個權限漏洞都長得一模一樣。呼叫堆疊深處的某個函式假設呼叫者已經檢查過 。結果沒有。或者新增了一個角色,你在 47 個檔案裡用 grep 搜尋 ,祈禱自己沒有漏掉任何一處。 Capability-based security…

如果每個函式都必須被賦予權限,而不是預設擁有呢?

大多數程式碼在 ambient authority 下執行:每個函式都能碰觸一切。Capability-based security 顛覆了這個模式,強制函式必須接收明確且受範圍限制的權限。

你的 函式能夠存取資料庫、payment gateway與審計紀錄,只因為它恰好執行在同一個程序裡。如果攻擊者在某個 HTTP handler 中發現注入漏洞,他們就能繼承這一切權限。這個函式從未要求過這些能力,它僅僅因為被部署在這裡,就理所當然地預設擁有。 這就是 ambient…