permissions

2 posts

あなたの権限チェックは嘘をついている

ケイパビリティベースセキュリティは、散在するロールチェックを改ざん不可能な権限トークンで置き換える。コードを読みにくくすることなく TypeScript で実装する方法はこちら。

後になって振り返ると、すべての権限バグは同じ顔をしている。コールスタックの奥深くにある関数が、呼び出し元がすでに をチェックしたと想定している。実際にはチェックされていない。あるいは新しいロールが追加され、47ファイルを横断して を grep し、見落としていないか祈ることになる。…

もしすべての関数が、権限を前提とするのではなく受け取る必要があったら?

ほとんどのコードは ambient authority のもとで動作している。つまり、すべての関数があらゆるリソースに暗黙的にアクセスできる。capability-based security はこのモデルを覆し、関数に明示的でスコープ化された権限を受け取らせる。

あなたの 関数は、たまたま同じプロセス内に存在するという理由だけで、データベース、決済ゲートウェイ、監査ログへのすべてのアクセス権を持っている。攻撃者が 1 つの HTTP ハンドラーに injection bug…