這裡是 WWW 第拾玖期,Wow Weihang Weekly 是一個毫無章法的個人週刊,出刊週期極不固定,從一週到五年都有可能。初期內容以軟體工程為主,等財富自由後會有更多雜食篇章。

B!tch to Boss

這應該是我看過最有趣的 addons,而且還是 Mozilla 官方出品,儘管無法有效減少 internet troll,至少一直有人叫你老闆就是爽。

Great job, Mozilla!

關於 Microsoft 的幾個 Rust 新聞與專案

最近除了 AWS 在找 Rust SDKlambda 的職缺,微軟也不斷在 Rust 有所著墨,簡單介紹兩個專案新聞:

To test its security mid-pandemic, GitLab tried phishing its own work-from-home staff. 1 in 5 fell for it

GitLab 對自家員工「釣魚」資安演練,至少 20% 的員工中招填入帳號密碼,但驚人的是這個比例居然還是低於業界平均 30-40%。突然想起我在公司內部 hackathon 期間也做過釣魚郵件的資安演練,買了 slack-info.app 的 domain 並寄送重設密碼信來測試釣魚,四十個人只有一人中招。嗯,勉強及格。

The Rule Of 2

身為 web developer,經常與資料庫打交道的我們都很熟悉 CAP theorem,但你知道 UHU theorem 嗎?其實沒有這個理論,不過 Chromium 團隊在[最近大廠](https://github.com/microsoft/MSRC-Security-Research/blob/master/papers/2020/Security analysis of memory tagging.pdf)發現 memory safety 是主要的漏洞之一,而攻擊 memory safety 的面向有三個,只要三個都達成,恭喜你來到資安地獄。以下分別介紹三個弱點:

  1. 不信任的輸入:memory safety 漏洞主要來源
  2. 使用缺乏 memory safety 的語言:C、C++、Assembly 都是 unsafe 語言
  3. 高權限:權限是一個相對概念,韌體、OS process、容器沙盒,給錯權限你就知死(tsai-sí)

解法至少有四種方向:

  • 降低權限:都放入沙盒中,定義清楚的 IPC(或者用 WebAssembly?)
  • 驗證可信任的來源:這裡的例子比較 Chromium-specific,但就是透過官方的 updater 或是直接將 TLS pin 到 Chrmium 裡面
  • 正規化:將輸入轉化成一個語法簡單的格式,縮小錯誤不安全的 scope
  • 安全的語言:例如先用 Java 寫的 JsonSanitizer 來驗證輸入是否安全,再傳給 C++