Simon Willison 新實驗:運用 MicroPython 與 WASM 打造安全的 Python 程式碼沙盒

Simon Willison 分享了他如何使用 micropython-wasm 創建一個安全的程式碼執行沙盒,並用於 Datasette Agent,這是一個關於安全程式碼執行的實作方法。

Simon Willison 介紹了他的新專案 micropython-wasm,旨在提供一個 安全且受控 的環境來執行 Python 程式碼。其主要動機是為其開源專案如 Datasette 的外掛系統及任意程式碼執行功能,解決因 全權限執行 帶來的安全風險,例如惡意或錯誤程式碼可能導致資料外洩或系統崩潰。作者對沙盒的要求包括: • 記憶體與 CPU 限制 • 嚴格控制的 檔案與網路存取 • 支援 與主機函式互動 • 易於安裝與維護 他發現 WebAssembly (WASM) 因其在瀏覽器中的安全實踐,成為理想的沙盒技術,特別是 wasmtime 函式庫提供了在 Python 環境中執行 WASM 的能力。為了解決在 WASM 中執行 Python 直譯器的挑戰,作者選擇了 MicroPython,因為它輕量且專為受限環境設計。開發過程中,作者運用 AI 輔助編譯 MicroPython 至 WASM,並透過 多執行緒與佇列 巧妙地實現了 持久化直譯器狀態,讓變數和函式能在多次呼叫中保持駐留。此外,透過自訂 C 程式碼,成功支援了 主機函式 (host functions) 的呼叫,進一步提升了沙盒的實用性。這個新專案 micropython-wasm 已經以 alpha 套件形式發布,並被用於 Datasette Agent 的程式碼執行沙盒外掛中。


來源:Simon Willison

閱讀原文 ↗
← 回首頁