0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Microsoft LiteBoxを使ってみた

0
Last updated at Posted at 2026-03-19

2026年2月にMicrosoftがリリースしたLiteBoxは、アタックサーフェスが小さなサンドボックス型ライブラリOSです。
LiteBoxのReadMeに列挙されているユースケースのうち、ふたつだけ試してみました。

  1. Linux上のサンドボックスでLinuxのバイナリを動かす
  2. WSLもDockerも使わずにWindows上でLinuxのバイナリを動かす

ソースコード配布されているLiteBoxのビルド方法やその結果得られる成果物の利用方法等の情報があまりないので、それらをスクリプトに含めてしまうことで誰にでも簡単に試すことができるようにしました。スクリプトを読めば実際に何が行われているかは理解できるでしょう。

前提条件

  • Dockerが動いているIntel PCが必要です。ARMでは--platform linux/amd64を指定しても一部の機能を使おうとするとsegmentation faultを起こしてしまいます(2026/3/15現在)。

まずはサクッと試してみる

LiteBoxを試すためのスクリプトをダウンロードします。
LiteBoxはRustで記述されています。Rustコンパイラによるビルド成果物を取り込んだDockerイメージを作るDockerfileを準備しました。

Linux
$ git clone https://github.com/wataniguchi/LiteBox_playground.git
$ cd LiteBox_playground
$ ls
Dockerfile      helloworld            README.md
gen_package.sh  play_with_LiteBox.sh  run_package.sh

最初にサンドボックスで利用するためのLinuxバイナリと依存ライブラリを含むパッケージをDockerコンテナで生成します。
gen_package.shにより、ここでは一例として/usr/bin/lsを実行するためのパッケージであるlitebox-_usr_bin_ls.tarを生成し、幾つかのファイルと共にホストへ複写します。このtarファイルの内容が、目的プラットフォーム上のサンドボックスで読み取り専用仮想ファイルシステムとして利用されます。

Linux
$ ./gen_package.sh /usr/bin/ls
$ ls
_common.sh      litebox                        README.md
Dockerfile      litebox_runner_linux_userland  run_package.sh
gen_package.sh  litebox-_usr_bin_ls.tar        tun-setup.sh
helloworld      play_with_LiteBox.sh

スクリプトrun_package.shを使って、Linux上のサンドボックスで/usr/bin/lsを実行します。

Linux
$ ./run_package.sh /usr/bin/ls -la /
...
[+] Running /usr/bin/ls using litebox_runner_linux_userland with package litebox-_usr_bin_ls.tar...
/usr/bin/ls: .: Function not implemented
total 0
drwxr-xr-x 1    0    0 4096 Jan  1  1970 .
drwxr-xr-x 1    0    0 4096 Jan  1  1970 ..
drwxr-xr-x 1    0    0 4096 Jan  1  1970 lib
drwxrwxrwx 1 1000 1000 4096 Jan  1  1970 lib64
drwxrwxrwx 1    0    0 4096 Jan  1  1970 tmp
drwxrwxrwx 1 1000 1000 4096 Jan  1  1970 usr
...

lsをサブディレクトリへも順次実行していくと、/usr/bin/lsに加えて依存ライブラリが/lib /lib64以下に配置されていることがわかるでしょう。

これと同様のことがWindows上でも出来ますが、幾つかのステップが必要です。

  1. WindowsでRust用の開発環境を設定する
  2. WindowsでGitを導入する
  3. LiteBoxのlitebox_runner_linux_on_windows_userland.exeをビルドする
    Windows
    > git clone https://github.com/microsoft/litebox.git
    > cd litebox
    > cargo build --release --package litebox_runner_linux_on_windows_userland
    
  4. 前のステップで作成したlitebox-_usr_bin_ls.tarを(scp等により)LinuxからWindowsへ複写する
  5. litebox_runner_linux_on_windows_userland.exeを使って、Windows上でLinuxのバイナリを動かす
    Windows
    > .\litebox\target\release\litebox_runner_linux_on_windows_userland.exe --initial-files .\litebox-_usr_bin_ls.tar /usr/bin/ls -la
    total 0
    drwxr-xr-x 1    0    0 4096 Jan  1  1970 .
    drwxr-xr-x 1    0    0 4096 Jan  1  1970 ..
    drwxrwxrwx 1 1000 1000 4096 Jan  1  1970 lib
    drwxrwxrwx 1 1000 1000 4096 Jan  1  1970 lib64
    drwxrwxrwx 1 1000 1000 4096 Jan  1  1970 tmp
    drwxrwxrwx 1 1000 1000 4096 Jan  1  1970 usr
    

WSLもDockerも導入されていない状態で実行可能です。

Webアプリケーションを試してみる

「まずはサクッと試してみる」で使ったDockerコンテナでは、Rustで記述されたweb版helloworldアプリケーションを同時にビルドしています。
helloworldアプリケーションを含むパッケージを取り出して、Linux上のサンドボックスで実行してみましょう。

Linux
$ ./gen_package.sh /app/helloworld
$ ./run_package.sh /app/helloworld
...
[+] Running /app/helloworld using litebox_runner_linux_userland with package litebox-_app_helloworld.tar...
Server is running on http://10.0.0.2:3000

この状態で、別のターミナルから接続してみます(ブラウザを使っても大丈夫です)。

Linux
$ curl -s 'http://10.0.0.2:3000/' 
Hello, World! Your IP: 10.0.0.1 

サンドボックスとの通信はトンネルデバイス経由で行います。ここでは、ホストで10.0.0.1/24をトンネルデバイスへ割り振っています。

Windowsでもやってみようと思ったのですが、litebox_platform_windows_userland/src/lib.rssend_ip_packet()receive_ip_packet()が未実装でした。

もっと遊んでみる

play_with_LiteBox.shでコンテナにログイン出来ます。
litebox_packagerlitebox_syscall_rewriter等は/app/litebox/target/release/にありますので使ってみましょう。

サンドボックスからはホストのファイルシステムやネットワークへ直接アクセスできない作りになっており、アタックサーフェスが小さいことを実感できます。
LiteBoxのリポジトリへは頻繁にコミットがされています。play_with_LiteBox.shgen_package.shではコミットIDを指定してリポジトリの状態を固定していますが、その部分をコメントアウトすれば最新のリポジトリを使ったテストが出来ます。未実装部分がこれから実装されていくのが楽しみです。

参考

LiteBoxのREADME
Microsoft LiteBoxを動かしてみる

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?