
如何快速上手LiteBox10分鐘運行第一個未修改的Linux程序【免費下載鏈接】liteboxA security-focused library OS supporting kernel- and user-mode execution項目地址: https://gitcode.com/GitHub_Trending/lit/liteboxLiteBoxLiteBox 庫操作系統(tǒng)是一個安全優(yōu)先的「library OS」沙箱能在未修改的 Linux 程序與宿主環(huán)境之間建立極窄的接口面從而大幅縮小攻擊面。本文將帶你用 10 分鐘從零克隆、編譯并跑通第一個未修改的 Linux 程序適合想體驗 Linux 應(yīng)用沙箱、跨平臺運行的新手與普通用戶。 上圖為 LiteBox 的整體架構(gòu)上方的North 接口面向各種程序Linux Shim、OPTEE Shim 等下方的South 接口對接不同平臺Linux 用戶態(tài)、Windows 用戶態(tài)、SEV SNP 等中間的 LiteBox 核心把兩者解耦實現(xiàn)任意「北-南」組合。一、LiteBox 是什么為什么值得上手一句話概括LiteBox 讓你把一個普通的 Linux 可執(zhí)行文件放進一個受控沙箱里運行程序代碼完全不用改。它的典型用途包括? 在未修改的 Linux 上沙箱化運行 Linux 應(yīng)用 在 Windows 上運行未修改的 Linux 程序? 在 AMD SEV SNP 機密計算環(huán)境中運行程序 在 OP-TEE、LVBS 等安全平臺上運行程序?qū)π率謥碚f最易上手的場景就是第一個在 Linux 上用litebox_runner_linux_userland跑一個現(xiàn)成的二進制。二、環(huán)境準備一鍵安裝步驟開始之前請確認你的機器滿足以下條件以 x86-64 Linux 為例依賴用途說明Rust 工具鏈stable 即可編譯項目項目根目錄的 rust-toolchain.toml 指定 stableC 編譯器gcc/cc編譯測試小程序用于把 C 源碼編譯成 ELFtar打包 rootfs沙箱文件系統(tǒng)以 tar 形式提供內(nèi)核 TUN 模塊可選聯(lián)網(wǎng)功能見 litebox_platform_linux_userland/scripts/tun-setup.sh三、10 分鐘跑通完整上手步驟步驟 1克隆 LiteBox 倉庫git clone https://gitcode.com/GitHub_Trending/lit/litebox cd litebox步驟 2編譯運行器運行器是一個 Cargo 工作區(qū)成員直接構(gòu)建即可首次編譯約幾分鐘cargo build --package litebox_runner_linux_userland步驟 3準備一個未修改的 Linux 程序倉庫自帶測試程序 litebox_runner_linux_userland/tests/hello.c它打印 argv/envp 并調(diào)用clock_gettime是完美的「第一個程序」。先把它編譯成靜態(tài)或動態(tài) ELFgcc -static litebox_runner_linux_userland/tests/hello.c -o /tmp/hello步驟 4在 LiteBox 沙箱中運行它關(guān)鍵命令只有一條注意--unstable是必需開關(guān)它啟用不穩(wěn)定選項cargo run --package litebox_runner_linux_userland -- \ --unstable --rewrite-syscalls /tmp/hello如果看到類似這樣的輸出恭喜你第一個程序跑通了 argv[0] /tmp/hello Elapsed time: 0.0xxx seconds這條命令在做什么--rewrite-syscalls會在運行前對 ELF 做一次性「系統(tǒng)調(diào)用重寫」把二進制中每條syscall指令替換成跳轉(zhuǎn)指令掛接到 LiteBox 的樁代碼上詳見 litebox_syscall_rewriter/src/lib.rs。整個過程不需要 ptrace、seccomp 或內(nèi)核配合開銷很低——這是 LiteBox 能在純用戶態(tài)攔截系統(tǒng)調(diào)用的核心技巧。?? 小提示重寫目前僅支持 x86-64 ELF另外它是對靜態(tài)二進制最友好動態(tài)鏈接程序需要補齊依賴庫見下文。步驟 5運行真實的系統(tǒng)程序進階 5 分鐘跑ls這類動態(tài)鏈接程序時需要把它的共享庫一并放進沙箱的 tar 文件系統(tǒng)。做法參考 litebox_runner_linux_userland/tests/run.rs 中的標(biāo)準流程# 1. 建一個目錄模擬 rootfs放入程序和依賴庫 mkdir -p /tmp/rootfs/lib cp /usr/bin/ls /tmp/rootfs/ cp $(ldd /usr/bin/ls | awk {print $3} | grep ^/) /tmp/rootfs/lib/ # 2. 打成 tar 包 tar -C /tmp/rootfs -cf /tmp/rootfs.tar . # 3. 運行程序路徑是 tar 內(nèi)部的絕對路徑 cargo run --package litebox_runner_linux_userland -- \ --unstable --initial-files /tmp/rootfs.tar \ --env LD_LIBRARY_PATH/lib --env HOME/ \ -- /bin/ls -a運行器會把這個 tar 包掛成只讀的初始文件系統(tǒng)再執(zhí)行其中的/bin/ls。動態(tài)鏈接場景下依賴庫需要先用 rewrite 工具預(yù)處理這一點在 litebox_runner_linux_userland/tests/common/mod.rs 的rewrite_with_cache中有現(xiàn)成參考。四、理解架構(gòu)North 接口與 South 平臺LiteBox 的源碼結(jié)構(gòu)非常清晰核心分三層North北向接口一套 Rust 風(fēng)格的、受nix/rustix啟發(fā)的類 Unix API供各種 Shim 調(diào)用核心庫位于 litebox/src/lib.rsSouth南向平臺最小化的Platform實現(xiàn)如 litebox_platform_linux_userland 直接利用宿主機 Linux 的調(diào)用Shim模擬器把 Linux 系統(tǒng)調(diào)用翻譯成 North 接口見 litebox_shim_linux/src/lib.rs想深入源碼從 litebox_runner_linux_userland/src/lib.rs 的 CLI 參數(shù)定義入手再順著 litebox/src/event/mod.rs、litebox/src/fd/mod.rs 等模塊讀就能摸清事件、文件描述符、虛擬文件系統(tǒng)litebox/src/fs/的完整鏈路。五、可選為沙箱接入網(wǎng)絡(luò)TUN 設(shè)備如果程序需要聯(lián)網(wǎng)先初始化一個 TUN 設(shè)備sudo ./litebox_platform_linux_userland/scripts/tun-setup.sh然后給運行器加上--tun-device-name tun0參數(shù)即可沙箱內(nèi)的 TCP 流量會經(jīng)由該設(shè)備與主機通信倉庫測試中就用它跑了iperf3和curl見 litebox_runner_linux_userland/tests/run.rs。六、常見問題與調(diào)試技巧問題解決方法想看到詳細日志設(shè)置LITEBOX_LOGdebug如LITEBOX_LOGdebug cargo run ...也可按模塊過濾如LITEBOX_LOGlitebox::fstrace參數(shù)報「unstable options require -Z」加上--unstable也可寫作-Z動態(tài)程序缺庫報錯用ldd列出依賴逐一拷入 tar 并設(shè)置LD_LIBRARY_PATH程序?qū)懳募ar 文件系統(tǒng)是只讀的屬正?,F(xiàn)象用戶身份相關(guān)報錯運行器內(nèi)部固定使用 uid/gid 1000 的 guest 身份見 litebox_runner_linux_userland/src/lib.rs七、下一步學(xué)什么 想體驗「Linux 程序跑在 Windows 上」看 litebox_platform_windows_userland/ 與 litebox_runner_linux_on_windows_userland/ 想生成自包含的 tar 打包鏡像了解 litebox_packager/ 想給項目做貢獻閱讀 CONTRIBUTING.md 想看基準測試方法參考 dev_bench/unixbench/README.md總結(jié)只需 4 步——克隆 → 編譯 → 準備程序 → 一條命令運行你就已經(jīng)體驗了 LiteBox 這個安全優(yōu)先的庫操作系統(tǒng)如何在未修改的 Linux 程序上建立沙箱。它的 North/South 分層設(shè)計意味著同一套 Shim 可以平移到 Windows、SEV SNP 等平臺這也是它最值得關(guān)注的地方?,F(xiàn)在去試試把你的常用工具python3、node、iperf3也搬進沙箱吧說明項目仍在快速演進部分接口可能隨設(shè)計成熟而變化建議關(guān)注倉庫更新獲取最新用法?!久赓M下載鏈接】liteboxA security-focused library OS supporting kernel- and user-mode execution項目地址: https://gitcode.com/GitHub_Trending/lit/litebox創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考