iT邦幫忙

2026 iThome 鐵人賽

DAY 4
0
Security

從 CSSLP 視角建構恰到好處的軟體安全系列 第 4

Day 03 | 簡單勝過繁複:從最小權限到機制簡化 (Economy of Mechanism) 的架構哲學

  • 分享至 

  • xImage
  •  

Introduction

當系統架構過於龐雜,或是權限派發沒有邊界時,我們付出的代價不僅是被攻擊的「爆炸半徑」擴大,還包含了日常維運中無止盡的稽核、除錯與效能浪費。

Discussion

英國伯明罕監獄(HM Prison Birmingham)被偷走一把鑰匙,整座監獄淪陷

英國伯明罕監獄(HMP Birmingham)發生嚴重暴動。起因是一名獄警遭到囚犯突襲,身上的鑰匙被搶走,這串被搶走的鑰匙,權限不僅僅是打開原本區域的幾間牢房而已。囚犯拿到鑰匙後,竟然能夠解鎖通往其他監區的大門,導致監獄面臨極大的暴動風險,整個監獄被迫進入封鎖狀態。

補救的巨大代價:

  • 從早上 9 點多鑰匙被搶、暴動爆發,一直到晚上 10 點 30 分左右才重新奪回四個監區的控制權,整個過程耗時超過 12 至 15 個小時。
  • 私人承包商 G4S 必須承擔因這次暴動產生的所有額外費用,包含龍捲風部隊的出勤費、遭破壞設施的重建費用,以及大規模移監的成本,至少約200萬英鎊的損失

Takeaways

最小權限 (Least Privilege)

(e.g., access control, need-to-know, run-time privileges, Zero Trust)

A subject should have only the necessary rights and privileges to perform its current task — nothing more.

零信任對所有主體強制執行相同等級的嚴格驗證,無論在網路內部或外部。沒有隱含的信任。

職責分離 (Separation of Duties, SoD)

(e.g., multi-party control, secret sharing, split knowledge)

No single subject should be given enough privileges to misuse the system on their own. Critical functions must be divided among subjects.

分割知識 (Split Knowledge) = 密碼學金鑰被分割成 n 個組件,每個個別組件不提供原始金鑰的任何知識,但可重新組合以重建原始金鑰。 (NIST SP 800-57 Part 1 Rev. 5)

縱深防禦 (Defense in Depth)

(e.g., layered controls, geographical diversity, technical diversity, distributed systems)

韌性 (Resiliency)

(e.g., fail safe, fail secure, no single point of failure, failover)

  • 承受誤用和攻擊: 韌性 (resilient)
  • 按預期運作: 可靠 (reliable)
  • 恢復到正常運營: 可復原 (recoverable)

機制簡化原則 (Economy of Mechanism)

(e.g., single sign-on (SSO), password vaults, resource efficiency)

完全仲裁 (Complete Mediation)

(e.g., cookie management, session management, caching of credentials)

每一次存取資源的行為,都必須經過授權檢查。

領域 實踐
Cookie 管理 每次請求重新驗證會話 Cookie
會話管理 持續驗證會話狀態和權限
憑證快取 避免長期快取的憑證
API 呼叫 對每個 API 請求進行認證和授權

設計公開 (Open Design)

(e.g., Kerckhoffs’s principle, peer review, open source, crowd source)

系統的安全不應依賴於其設計、實作或元件的保密性。

最小共用機制 (Least Common Mechanism)

(e.g., compartmentalization/isolation, allow/accept list)

  • 最小權限 = 限制主體能做什麼
  • 最小共用機制 = 限制主體共享什麼(機制/路徑)
    compartmentalization/isolation 限制使用者角色,使不同功能基於使用者角色執行

心理可接受度 (Psychological Acceptability)

(e.g., password complexity, passwordless authentication, screen layouts, Completely Automated Public Turing test to tell Computers and Humans Apart (CAPTCHA))

安全功能應該易於使用且對使用者透明。如果安全成為障礙,使用者會繞過它。

領域 良好實踐 不良實踐
密碼複雜度 合理要求,搭配密碼管理器 政策太複雜以至於使用者需要寫下密碼

元件重複使用 (Component Reuse)

(e.g., common controls, libraries)

重用現有且經過測試的元件,避免引入新的漏洞和增加攻擊面。
開發團隊自行編寫密碼學演算法,而不使用經驗證的標準如 AES。自訂加密實作幾乎總是被發現是最薄弱的環節,導致敏感資訊洩露。

Further Reading

HM Prison Birmingham 2016 prison riot
https://en.wikipedia.org/wiki/HM_Prison_Birmingham


上一篇
Day 02 | 安全控制的選擇:將擔心的後果映射到 CIA 防禦邊界
下一篇
Day 04 | 敏捷開發 (Agile) 不翻車的秘密:設定 Control Gate的投資效益
系列文
從 CSSLP 視角建構恰到好處的軟體安全7
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言