安全性
本指南旨在說明 Tauri 設計核心的高階概念和安全功能,讓您、您的應用程式和您的使用者預設更安全。
雖然我們會把握每個機會來協助您強化應用程式,但總是會有潛在的威脅,例如 BIOS 攻擊、記憶體 rowhammering 和其他作業系統漏洞,這些漏洞會持續被發現,並(在最佳情況下)負責任地揭露。
此外,開發團隊有許多方法可以偷工減料,並洩漏敏感資訊或讓各種攻擊有機可乘。安全性是一場永無止境的追求,您的使用者仰賴您來確保他們的安全。
因此,我們強烈建議您花點時間考量應用程式所執行所有動作的安全性影響,特別是在執行於使用者裝置這種半敵對平台的脈絡下。
如果您需要協助或想要檢閱,歡迎聯絡 Tauri 團隊進行安全性諮詢。
安全性研究人員
如果您認為 Tauri 中的任何事物有安全性疑慮或問題,請不要公開評論您的發現。相反地,請直接聯繫我們的安全團隊:security@tauri.app
雖然我們目前沒有安全漏洞獎金的預算,但在某些情況下,我們會考慮用我們有限的資源來獎勵負責任的揭露。
不需要伺服器
Tauri 讓您能建構一個使用網路技術作為使用者介面的應用程式,而無需使用伺服器來與後端通訊。即使您使用動態匯入和卸載工作到後端的進階技術,也無法在 TCP 埠或外部程序中偵測到任何流量,因為它們不存在。這不僅大幅減少最終二進位檔的實體和虛擬空間,也透過將它們從等式中移除,來減少潛在攻擊向量的表面積。
Rust 的語言功能
透過轉向以記憶體安全性與速度聞名的程式語言,Tauri 僅僅抹除了傳統攻擊的整個類別。「釋放後使用」根本不是 Tauri 會發生的事情。
動態即時編譯 (AOT)
這個編譯程序在 Tauri 應用程式的引導階段發生多次。使用我們預設的動態即時編譯器,您可以產生每個階段都獨特的程式碼參考,而且在技術上仍然是靜態程式碼單位。
函式強化
功能性 ASLR
功能性地址空間配置隨機化技術會在執行階段隨機化函式名稱,並且可以實作 OTP hashing,因此沒有兩個階段會相同。我們提出在啟動時和選擇性地於每次執行後進行一種新穎的函式命名類型。使用每個函式指標的 UID 可以防止靜態攻擊。
神風特攻隊函式注入
使用 EVENT
API 端點的這種進階 fASLR 類型是一個封裝在封閉函式(具有隨機處理程序)中的承諾,Rust 在執行時期將其插入 WebView,其中其介面鎖定在承諾解析處理程序中,並在執行後變為空值。
橋接,不提供服務
與其傳遞潛在不安全的函式,可以使用事件橋接來傳遞訊息和命令給應用程式各個相對應側的命名代理程式。
一次性密碼標記化和雜湊
使用 OTP 鹽雜湊重要訊息,您就能加密使用者介面和 Rust 後端的訊息。我們目前正在研究使用其他熵來源,例如令人驚豔的 無限雜訊 TRNG。
系統功能
允許 API
您可以選擇哪些 API 函式可供 UI 和 Rust 使用。如果未啟用,程式碼不會與您的應用程式一同發布,這會減少二進位大小和攻擊面。它們是選擇加入的,因此您必須有意識地選擇逐步增強您的應用程式。
內容安全性政策管理
使用 CSP 已「解決」防止網站執行未經授權的程式碼。Tauri 可以將 CSP 注入使用者介面的 index.html
,並且在使用本機主機伺服器時,它也會將這些標頭傳送給 UI 或任何與其連線的其他用戶端。
反編譯很困難
這表示你的應用程式無法輕易地被反編譯,就像 Electron ASAR 檔案一樣,這使得逆向工程專案的過程需要更多時間,而且需要專業訓練。
生態系統
建置管線和人工製品真實性
我們發布原始碼人工製品的過程高度自動化,但仍需要真人啟動和審查。我們目前的發布策略使用 GitHub Actions 和 IOTA Tangle 發布的組合。
有韌性的公關和核准流程
我們的 WG-TECH 會審查程式碼變更,標記範圍的公關,並確保所有內容保持最新。當要發布新版本時,其中一位維護人員會在 dev 上標記新版本,這會
- 驗證核心
- 執行冒煙測試
- 稽核箱子和 npm 的安全性
- 產生變更日誌
- 建立人工製品
- 將檢查碼發布到 IOTA
- 建立草稿版本
然後,維護人員會審查版本說明,必要時進行編輯,並建立新版本。
未來工作
簽署的二進位檔
由於整個專案都在一個巨型二進位檔中運送,因此可以為所有可分發項目簽署程式碼。(目前使用外部工具,但我們正積極開發讓打包器成為一站式服務。)這讓駭客幾乎不可能在作業系統沒有察覺的情況下變更已安裝的應用程式。參考
二進位檔分析後
使用工業級滲透測試工具(透過我們即將推出的 Tauri-Frida GUI)來找出並修復最終二進位檔中的安全性弱點。
二進位檔增強後
在建置完成後,在交付之前,Tauri 將會提供前所未見的工具給您。敬請期待!
稽核
我們目前正在進行第一次外部稽核。完成後,我們將在此處發布結果。