microsandbox-rb 0.17.4 → 0.17.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7d72d5c6e7a8d135e93d02d64c8966cf6cd4b7dcbf17d02bb65d074a963a977c
4
- data.tar.gz: cde0f1e7c9d8b8270a98dd333e7e49709d24bd237ee2c7a6c671b8913f1b3393
3
+ metadata.gz: 3c597286c232618bfceb4eeaa3fb283944fc51a4ff0d453394f7ce413a25301d
4
+ data.tar.gz: aa6f046fb175fd5a987c35ce190f73676fc83e9de1171b7f64ff45b6e9ec59a9
5
5
  SHA512:
6
- metadata.gz: 5c1ceaecff30c64f9fd7f138c75acf080202468f56859b613a52d7ef482f8da32b82c4bf0f4191a50e0804e0938fa62c4ceff1b771b8df4cd0d1e10b06a19c81
7
- data.tar.gz: 4a817a61508dd57b041c56b351be03d6dfc317d1a84079c9e0049e9dde374583252afe91522fdb7c61fbce547d87dc326d4c3bb2aaa77fb27b69e68669907b69
6
+ metadata.gz: fd0ac5efec2d2e2afe113eb0ad21187ac0cf6a2a353ec6ff21ce6ad19399bf266d06764815edb61012620e49095d860b09aefc101b91bfe65b2f36693d980edc
7
+ data.tar.gz: b2dcd15f8fee68bceeaa0818d3f1b889a31ffff11e4031f618f753495c2b04291be64f6384c9ea47ed5b296dfccd96905e5e67d731c41ea33466ab283f6b3778
data/CHANGELOG.md CHANGED
@@ -8,6 +8,57 @@ wraps, and the README's Versioning section keeps the full gem→runtime map.
8
8
 
9
9
  ## [Unreleased]
10
10
 
11
+ ## [0.17.5] - 2026-10-27
12
+
13
+ Gem-only security release; the embedded runtime stays at **`v0.6.18`**.
14
+ Dependency updates clear ten new RustSec advisories, RUSTSEC-2026-0381 to
15
+ -0410. They include the zstd copy that decompresses pulled image layers.
16
+ Three zstd advisories remain on a second copy that sits only on an
17
+ external-kernel path the runtime never takes (see Security). `SECURITY.md`
18
+ now maps four more upstream advisories to gem versions.
19
+
20
+ ### Security
21
+
22
+ - **zstd 0.13.3 → 0.14.3, zstd-safe 7.2.4 → 8.2.0 and zstd-sys 2.0.16 →
23
+ 2.1.2 for image-layer decompression** (transitive, through
24
+ async-compression 0.4.51 / compression-codecs 0.4.46). The SDK decompresses
25
+ pulled OCI image layers through these, so this fixes RUSTSEC-2026-0391
26
+ (data from an abandoned stream leaked into the next stream on a reused
27
+ context), RUSTSEC-2026-0398 (`Seekable::decompress` set a `Vec` length past
28
+ its capacity) and RUSTSEC-2026-0403 (uninitialized memory exposed when
29
+ streaming decompression of a legacy frame failed) on that path. The
30
+ zstd-sys bump also fixes RUSTSEC-2026-0410 (its WebAssembly allocator shim
31
+ corrupted memory on allocation failure) for every zstd user in the build.
32
+ - **rustls-webpki 0.103.15 → 0.103.16, webpki-roots and webpki-root-certs
33
+ 1.0.7 → 1.0.11** (transitive, through the TLS stack: the HTTP clients and
34
+ the network stack's DNS client). Fixes RUSTSEC-2026-0382 (certificate
35
+ verification could accept distrusted intermediates) and RUSTSEC-2026-0381 /
36
+ RUSTSEC-2026-0383 (the bundled root certificates trusted distrusted emSign
37
+ intermediates).
38
+ - **tokio 1.53.2 → 1.54.1.** Fixes RUSTSEC-2026-0386 (`AsyncFd::new` and
39
+ related constructors violated I/O safety).
40
+ - **crypto-bigint 0.7.5 → 0.7.10 and ctutils 0.4.2 → 0.4.6** (transitive,
41
+ through the SSH client, russh). Fixes RUSTSEC-2026-0387 and
42
+ RUSTSEC-2026-0385 (timing variability in operations meant to be constant
43
+ time). crypto-bigint 0.7.5 had also been yanked.
44
+ - **Not fixed: a second copy of zstd 0.13.3 / zstd-safe 7.2.4 stays in the
45
+ build** for RUSTSEC-2026-0391, -0398 and -0403. It comes only from the VM
46
+ monitor crate pinned by the embedded runtime `v0.6.18` (msb_krun_vmm
47
+ 0.1.32; no release of it moves to zstd 0.14), which uses it on x86_64
48
+ solely to decompress an external zstd-compressed kernel image. The runtime
49
+ never configures one — it boots from libkrunfw — and VMs run in the `msb`
50
+ process, not in the gem. It will be re-checked on the next runtime
51
+ adoption.
52
+
53
+ ### Docs
54
+
55
+ - **`SECURITY.md` maps four more upstream advisories to gem versions.** It
56
+ now lists GHSA-rh2c-vm8j-5gg6 (`Volume.fs` paths escaping the volume root:
57
+ affected `0.7.0`–`0.17.0`, mitigated in `0.17.1`; its upstream range is
58
+ incomplete), GHSA-v693-3rfr-6q3q (fixed from `0.9.2`) and
59
+ GHSA-89j4-256r-3pcq (fixed from `0.5.10`), and records that
60
+ GHSA-xgg5-hjwq-2gw8 affects no release of this gem.
61
+
11
62
  ## [0.17.4] - 2026-10-14
12
63
 
13
64
  Gem-only fix release; the embedded runtime stays at **`v0.6.18`**. Fork safety
@@ -1579,7 +1630,8 @@ microsandbox runtime, aligned with the official Python/Node/Go SDKs.
1579
1630
  core crate has Apple-native deps). Until precompiled gems are published,
1580
1631
  installing from source requires a Rust toolchain (stable >= 1.91).
1581
1632
 
1582
- [Unreleased]: https://github.com/ya-luotao/microsandbox-rb/compare/v0.17.4...HEAD
1633
+ [Unreleased]: https://github.com/ya-luotao/microsandbox-rb/compare/v0.17.5...HEAD
1634
+ [0.17.5]: https://github.com/ya-luotao/microsandbox-rb/compare/v0.17.4...v0.17.5
1583
1635
  [0.17.4]: https://github.com/ya-luotao/microsandbox-rb/compare/v0.17.3...v0.17.4
1584
1636
  [0.17.3]: https://github.com/ya-luotao/microsandbox-rb/compare/v0.17.2...v0.17.3
1585
1637
  [0.17.2]: https://github.com/ya-luotao/microsandbox-rb/compare/v0.17.1...v0.17.2
data/Cargo.lock CHANGED
@@ -431,9 +431,9 @@ dependencies = [
431
431
 
432
432
  [[package]]
433
433
  name = "async-compression"
434
- version = "0.4.42"
434
+ version = "0.4.51"
435
435
  source = "registry+https://github.com/rust-lang/crates.io-index"
436
- checksum = "e79b3f8a79cccc2898f31920fc69f304859b3bd567490f75ebf51ae1c792a9ac"
436
+ checksum = "9d5755640120b24961f8231e05892e4a4f7e0d04e8aeca161508c9c397946970"
437
437
  dependencies = [
438
438
  "compression-codecs",
439
439
  "compression-core",
@@ -1129,22 +1129,22 @@ dependencies = [
1129
1129
 
1130
1130
  [[package]]
1131
1131
  name = "compression-codecs"
1132
- version = "0.4.38"
1132
+ version = "0.4.46"
1133
1133
  source = "registry+https://github.com/rust-lang/crates.io-index"
1134
- checksum = "ce2548391e9c1929c21bf6aa2680af86fe4c1b33e6cea9ac1cfeec0bd11218cf"
1134
+ checksum = "cae36683101b2899f48bd31f8db9839437356188e3b1ff23096e73dab09ba8fe"
1135
1135
  dependencies = [
1136
1136
  "compression-core",
1137
1137
  "flate2",
1138
1138
  "memchr",
1139
- "zstd",
1140
- "zstd-safe",
1139
+ "zstd 0.14.3",
1140
+ "zstd-safe 8.2.0",
1141
1141
  ]
1142
1142
 
1143
1143
  [[package]]
1144
1144
  name = "compression-core"
1145
- version = "0.4.32"
1145
+ version = "0.4.34"
1146
1146
  source = "registry+https://github.com/rust-lang/crates.io-index"
1147
- checksum = "cc14f565cf027a105f7a44ccf9e5b424348421a1d8952a8fc9d499d313107789"
1147
+ checksum = "2ebdda89edc534bf8d5dd2857562633b6495557e5846552ade994b99ed13c36a"
1148
1148
 
1149
1149
  [[package]]
1150
1150
  name = "concurrent-queue"
@@ -1375,9 +1375,9 @@ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5"
1375
1375
 
1376
1376
  [[package]]
1377
1377
  name = "crypto-bigint"
1378
- version = "0.7.5"
1378
+ version = "0.7.10"
1379
1379
  source = "registry+https://github.com/rust-lang/crates.io-index"
1380
- checksum = "1a52aa3fcda4e6302a9f48734f234d35d4721b96f8fe07d073f07ce9df4f0271"
1380
+ checksum = "9c035cb64cba03dad2fb921f3e218785e8cf9a41790da5eb3a1400f62fa2be11"
1381
1381
  dependencies = [
1382
1382
  "cpubits",
1383
1383
  "ctutils",
@@ -1432,9 +1432,9 @@ dependencies = [
1432
1432
 
1433
1433
  [[package]]
1434
1434
  name = "ctutils"
1435
- version = "0.4.2"
1435
+ version = "0.4.6"
1436
1436
  source = "registry+https://github.com/rust-lang/crates.io-index"
1437
- checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e"
1437
+ checksum = "fe3e9d21d39e6f39ff46e03d5b621424f88ee23d8a1672c6bfc9ccc7f2da4f6a"
1438
1438
  dependencies = [
1439
1439
  "cmov",
1440
1440
  "subtle",
@@ -3168,9 +3168,9 @@ dependencies = [
3168
3168
 
3169
3169
  [[package]]
3170
3170
  name = "libc"
3171
- version = "0.2.186"
3171
+ version = "0.2.190"
3172
3172
  source = "registry+https://github.com/rust-lang/crates.io-index"
3173
- checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
3173
+ checksum = "ce5d3ddc6d3fa000eb1536d85e147bfe31aacaba692ed6a876f95cb7c855be78"
3174
3174
 
3175
3175
  [[package]]
3176
3176
  name = "libdbus-sys"
@@ -3289,9 +3289,9 @@ dependencies = [
3289
3289
 
3290
3290
  [[package]]
3291
3291
  name = "magnus"
3292
- version = "0.9.2"
3292
+ version = "0.9.3"
3293
3293
  source = "registry+https://github.com/rust-lang/crates.io-index"
3294
- checksum = "b9068710e00d21be762edca59b9c4c8946dbdb29820d4f76ad559afea07982c9"
3294
+ checksum = "40ef424404d166cbb71c8b8d19c9c589c748c4547c1afa1928c5504299f6c713"
3295
3295
  dependencies = [
3296
3296
  "magnus-macros",
3297
3297
  "rb-sys",
@@ -3660,7 +3660,7 @@ dependencies = [
3660
3660
 
3661
3661
  [[package]]
3662
3662
  name = "microsandbox_rb"
3663
- version = "0.17.4"
3663
+ version = "0.17.5"
3664
3664
  dependencies = [
3665
3665
  "chrono",
3666
3666
  "futures",
@@ -3937,7 +3937,7 @@ dependencies = [
3937
3937
  "msb_krun_utils",
3938
3938
  "nix 0.30.1",
3939
3939
  "windows-sys 0.61.2",
3940
- "zstd",
3940
+ "zstd 0.13.3",
3941
3941
  ]
3942
3942
 
3943
3943
  [[package]]
@@ -5351,9 +5351,9 @@ checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f"
5351
5351
 
5352
5352
  [[package]]
5353
5353
  name = "rustls-webpki"
5354
- version = "0.103.15"
5354
+ version = "0.103.16"
5355
5355
  source = "registry+https://github.com/rust-lang/crates.io-index"
5356
- checksum = "f3c3cf1d8b1e7d4927e2d154c3fcb02979afb9939629c62cd9048d4f07b60ac2"
5356
+ checksum = "4443b1b6d39d7c663139942cc4558262562d2c84123bb6282ef177009ca8b281"
5357
5357
  dependencies = [
5358
5358
  "aws-lc-rs",
5359
5359
  "ring",
@@ -5721,9 +5721,9 @@ dependencies = [
5721
5721
 
5722
5722
  [[package]]
5723
5723
  name = "serde_json"
5724
- version = "1.0.150"
5724
+ version = "1.0.154"
5725
5725
  source = "registry+https://github.com/rust-lang/crates.io-index"
5726
- checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9"
5726
+ checksum = "e7e9cc8b1b85264074fbcc02a88680c4096b1e47df8f739dceb03bf482f04bd6"
5727
5727
  dependencies = [
5728
5728
  "itoa",
5729
5729
  "memchr",
@@ -6043,7 +6043,7 @@ dependencies = [
6043
6043
  "tracing",
6044
6044
  "url",
6045
6045
  "uuid",
6046
- "webpki-roots 1.0.7",
6046
+ "webpki-roots 1.0.11",
6047
6047
  ]
6048
6048
 
6049
6049
  [[package]]
@@ -6532,9 +6532,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
6532
6532
 
6533
6533
  [[package]]
6534
6534
  name = "tokio"
6535
- version = "1.53.2"
6535
+ version = "1.54.1"
6536
6536
  source = "registry+https://github.com/rust-lang/crates.io-index"
6537
- checksum = "e95f91fcc7a621e8b030f6aa23c71fe9838ae2fb4d8118b75602a328f5144044"
6537
+ checksum = "b52fd3255258d26fac7264ab5a76b53c13367136dc011d3d6ad4f8ed070396a3"
6538
6538
  dependencies = [
6539
6539
  "bytes",
6540
6540
  "libc",
@@ -6891,7 +6891,7 @@ dependencies = [
6891
6891
  "rustls-platform-verifier",
6892
6892
  "ureq-proto",
6893
6893
  "utf8-zero",
6894
- "webpki-roots 1.0.7",
6894
+ "webpki-roots 1.0.11",
6895
6895
  ]
6896
6896
 
6897
6897
  [[package]]
@@ -7149,9 +7149,9 @@ dependencies = [
7149
7149
 
7150
7150
  [[package]]
7151
7151
  name = "webpki-root-certs"
7152
- version = "1.0.7"
7152
+ version = "1.0.11"
7153
7153
  source = "registry+https://github.com/rust-lang/crates.io-index"
7154
- checksum = "f31141ce3fc3e300ae89b78c0dd67f9708061d1d2eda54b8209346fd6be9a92c"
7154
+ checksum = "e49d0e65abc00c142e8f9428da991da9f1a250c39be97459901eb12b9b49f62a"
7155
7155
  dependencies = [
7156
7156
  "rustls-pki-types",
7157
7157
  ]
@@ -7162,14 +7162,14 @@ version = "0.26.11"
7162
7162
  source = "registry+https://github.com/rust-lang/crates.io-index"
7163
7163
  checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9"
7164
7164
  dependencies = [
7165
- "webpki-roots 1.0.7",
7165
+ "webpki-roots 1.0.11",
7166
7166
  ]
7167
7167
 
7168
7168
  [[package]]
7169
7169
  name = "webpki-roots"
7170
- version = "1.0.7"
7170
+ version = "1.0.11"
7171
7171
  source = "registry+https://github.com/rust-lang/crates.io-index"
7172
- checksum = "52f5ee44c96cf55f1b349600768e3ece3a8f26010c05265ab73f945bb1a2eb9d"
7172
+ checksum = "f5f280bbb2b287bc8e7de7e3852945a0ff50d1bbcb5ed42b6c7a568c546df171"
7173
7173
  dependencies = [
7174
7174
  "rustls-pki-types",
7175
7175
  ]
@@ -7892,7 +7892,16 @@ version = "0.13.3"
7892
7892
  source = "registry+https://github.com/rust-lang/crates.io-index"
7893
7893
  checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a"
7894
7894
  dependencies = [
7895
- "zstd-safe",
7895
+ "zstd-safe 7.2.4",
7896
+ ]
7897
+
7898
+ [[package]]
7899
+ name = "zstd"
7900
+ version = "0.14.3"
7901
+ source = "registry+https://github.com/rust-lang/crates.io-index"
7902
+ checksum = "db3ae9bf90af6e40197bef767eeefc46ad6397420fe873830bd85e5fbbfb3c70"
7903
+ dependencies = [
7904
+ "zstd-safe 8.2.0",
7896
7905
  ]
7897
7906
 
7898
7907
  [[package]]
@@ -7904,11 +7913,20 @@ dependencies = [
7904
7913
  "zstd-sys",
7905
7914
  ]
7906
7915
 
7916
+ [[package]]
7917
+ name = "zstd-safe"
7918
+ version = "8.2.0"
7919
+ source = "registry+https://github.com/rust-lang/crates.io-index"
7920
+ checksum = "ded520f16b29e1a9b771c722221b2b0a0398c2316d9bb3c42b458a5414d7434b"
7921
+ dependencies = [
7922
+ "zstd-sys",
7923
+ ]
7924
+
7907
7925
  [[package]]
7908
7926
  name = "zstd-sys"
7909
- version = "2.0.16+zstd.1.5.7"
7927
+ version = "2.1.2+zstd.1.5.7"
7910
7928
  source = "registry+https://github.com/rust-lang/crates.io-index"
7911
- checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748"
7929
+ checksum = "481ada9c543b2323cbb7bbdbb5249177fbf0188ed959ed2c15e4b22421c84ed3"
7912
7930
  dependencies = [
7913
7931
  "cc",
7914
7932
  "pkg-config",
data/README.md CHANGED
@@ -209,7 +209,7 @@ share the upstream tag, but the numbers have diverged since and the gem version
209
209
  is **not** an indicator of the embedded runtime. Ask the build instead:
210
210
 
211
211
  ```ruby
212
- Microsandbox::VERSION # => "0.17.4" (the gem's own version)
212
+ Microsandbox::VERSION # => "0.17.5" (the gem's own version)
213
213
  Microsandbox.runtime_version # => "v0.6.18" (the embedded upstream runtime tag)
214
214
  ```
215
215
 
@@ -245,10 +245,11 @@ constants against this gem's. Every release records its runtime in
245
245
  | `0.15.0` | `v0.6.14` | adopts upstream `v0.6.10`–`v0.6.14` step by step: bind-mount correctness, guest bootstrap off the kernel command line, DNS pins for deferred domain allows, Linux glibc 2.28 baseline for the prebuilt runtime, legacy ext4 upper-disk resize, `msb_krun` 0.1.32. Parity: `ssh.open_client`/`prepare_server` accept `inactivity_timeout:` (seconds; `0` disables, `nil` inherits the 600s global default) |
246
246
  | `0.16.0` | `v0.6.16` | adopts upstream `v0.6.15`+`v0.6.16` step by step: mount fallback ownership, readonly-mount write-probe fix, log retrieval rerouted through the SDK backends, config overlaid by field presence, network-slot recycling. Parity: per-mount `uid:`/`gid:`, and the convergent lifecycle — `Sandbox.connect_or_create`, `#id`, `#wait_for_status`, `#restart`, `#destroy`, `SandboxHandle#connect_or_start`, `SandboxReplacedError` |
247
247
  | `0.17.0` | `v0.6.18` | adopts upstream `v0.6.17`+`v0.6.18` step by step: outbound SOCKS4/SOCKS5 proxies (SOCKS5 UDP + credentials), migration-order fix for databases last opened by a `v0.6.15` `msb`, security hardening — plain-HTTP `Host`/`:authority` now checked against domain-rule policies even in non-strict mode, plus fail-closed strict hostname mode. Parity: `proxy:` (`Microsandbox::OutboundProxy` / `SecretSource`), `strict:` |
248
- | `0.17.1` | `v0.6.18` | gem-only security and hardening release: relative host paths pinned at create time (GHSA-mcw9-9rf6-p4rm), `Volume.fs` path validation, `Cargo.lock` advisory updates, argument-guard and cleanup fixes, `SECURITY.md` |
248
+ | `0.17.1` | `v0.6.18` | gem-only security and hardening release: relative host paths pinned at create time (GHSA-mcw9-9rf6-p4rm), `Volume.fs` path validation (mitigates GHSA-rh2c-vm8j-5gg6), `Cargo.lock` advisory updates, argument-guard and cleanup fixes, `SECURITY.md` |
249
249
  | `0.17.2` | `v0.6.18` | gem-only fix and release-pipeline hardening release: an interrupted native call no longer loses its result (a sandbox the call owns is stopped on `Timeout`/`Thread#kill`), release preflight, SHA-pinned workflow actions and `cargo deny` advisory checks, RBS and docs contract specs |
250
250
  | `0.17.3` | `v0.6.18` | gem-only fix release, fork safety: a forked child (Puma, Resque, Solid Queue) rebuilds its backend and runtime on its first SDK call instead of hanging or crashing, a handle created before the fork raises `ForkedHandleError` in the child, and nothing inherited from the parent is dropped there |
251
251
  | `0.17.4` | `v0.6.18` | gem-only fix release: fork safety identifies a process by pid and fork generation (survives pid reuse), `install`/`setup` leave the backend alone in a forked child, a `Sandbox` subclass's `initialize` runs outside the interrupt mask, and the macOS limit that a forked child must not build network clients is documented; rustls 0.23.46 fixes four TLS advisories (RUSTSEC-2026-0346 to -0349) |
252
+ | `0.17.5` | `v0.6.18` | gem-only security release: dependency updates clear RUSTSEC-2026-0381 to -0410, including the zstd used for image-layer decompression (three zstd advisories remain only on an external-kernel path the runtime never takes, see `CHANGELOG.md`); `SECURITY.md` maps more upstream advisories to gem versions |
252
253
 
253
254
  ## Development
254
255
 
data/SECURITY.md CHANGED
@@ -32,12 +32,20 @@ entry in some of them refers to the upstream project's own Ruby gem, not to
32
32
 
33
33
  | Advisory | Severity | Affected `microsandbox-rb` | Status |
34
34
  |---|---|---|---|
35
+ | [GHSA-rh2c-vm8j-5gg6](https://github.com/superradcompany/microsandbox/security/advisories/GHSA-rh2c-vm8j-5gg6) — `Volume.fs` paths that pass through a missing directory escape the volume root | Critical | `0.7.0`–`0.17.0` | Mitigated in `0.17.1`: every `Volume.fs` / `VolumeInfo#fs` method refuses a path with a `..` segment, in both the Ruby and the native layer, which closes the published bypass (`write`, `mkdir`, `copy` and `rename` through a directory that does not exist). The complete fix is upstream's rewrite of host-side volume access in runtime `v0.7.6`, which also closes the window between checking a path and using it; it arrives with the first gem release on runtime `v0.7.6` or later, and there is none yet. The upstream advisory lists only `microsandbox <= 0.6.16` with no patched version, but the affected resolver is unchanged in every runtime up to `v0.7.5`, so gem `0.17.0` (runtime `v0.6.18`) is affected too. `Volume.fs` first appeared in `0.7.0`. |
35
36
  | [GHSA-mcw9-9rf6-p4rm](https://github.com/superradcompany/microsandbox/security/advisories/GHSA-mcw9-9rf6-p4rm) — relative bind-mount paths re-resolved against the working directory on restart | High | `<= 0.17.0` | Fixed in `0.17.1` for sandboxes created through this gem (paths are pinned at create time in the binding). Sandboxes created earlier with a relative path keep it: recreate them. The `msb` CLI this gem installs is still runtime `v0.6.18`, so a sandbox created with `msb` directly is not covered: use absolute paths there. Tracked for this gem as [GHSA-qrhv-m6hf-9cmg](https://github.com/ya-luotao/microsandbox-rb/security/advisories/GHSA-qrhv-m6hf-9cmg). |
36
37
  | [GHSA-cg9x-2vfm-3j58](https://github.com/superradcompany/microsandbox/security/advisories/GHSA-cg9x-2vfm-3j58) — NAT64 addresses can bypass destination-group network policy | High | all versions (runtime `< v0.7.5`) | **Not fixed in this gem yet**; needs the runtime fix. Only exploitable where the host network routes a NAT64 prefix. Mitigate by denying the prefix explicitly (see below) or blocking it at the host. |
37
38
  | [GHSA-3mpp-52gc-935r](https://github.com/superradcompany/microsandbox/security/advisories/GHSA-3mpp-52gc-935r) — hostname allowlist bypass via mismatched HTTP `Host` / `:authority` | High | `<= 0.16.0` | Runtime fix included from `0.17.0`. If you rely on a hostname allowlist for HTTPS without TLS interception, also pass `strict: true` (off by default in this gem). |
38
39
  | [GHSA-gj24-29j2-3x78](https://github.com/superradcompany/microsandbox/security/advisories/GHSA-gj24-29j2-3x78) — egress allowlist bypass on malformed HTTP/1 request lines | Medium | `<= 0.12.0` | Runtime fix included from `0.13.0`. |
39
40
  | [GHSA-4vq3-cjpp-v7fg](https://github.com/superradcompany/microsandbox/security/advisories/GHSA-4vq3-cjpp-v7fg) — guest-controlled symlinks in `msb copy` | High | `<= 0.10.0` (the bundled `msb` CLI) | Runtime fix included from `0.11.0`. |
41
+ | [GHSA-v693-3rfr-6q3q](https://github.com/superradcompany/microsandbox/security/advisories/GHSA-v693-3rfr-6q3q) — IPv4-mapped IPv6 addresses bypass DNS rebind protection | Critical | `<= 0.9.1` | Runtime fix included from `0.9.2` (runtime `v0.6.3`). Affects network-enabled sandboxes. |
40
42
  | [GHSA-m8f5-rh7h-vgg3](https://github.com/superradcompany/microsandbox/security/advisories/GHSA-m8f5-rh7h-vgg3) — secret values in world-readable process arguments | Medium | `<= 0.7.0` | Runtime fix included from `0.8.0`. |
43
+ | [GHSA-89j4-256r-3pcq](https://github.com/superradcompany/microsandbox/security/advisories/GHSA-89j4-256r-3pcq) — symlink traversal when importing a snapshot archive | High | `0.5.7`–`0.5.9` (`Snapshot.import` and the bundled `msb snapshot import`) | Runtime fix included from `0.5.10` (runtime `v0.5.8`). |
44
+
45
+ [GHSA-xgg5-hjwq-2gw8](https://github.com/superradcompany/microsandbox/security/advisories/GHSA-xgg5-hjwq-2gw8)
46
+ (domain deny rules bypassed by direct-IP TLS) does not affect any release of
47
+ this gem: it was fixed in runtime `v0.5.0`, and the first release, `0.5.7`,
48
+ embeds runtime `v0.5.7`.
41
49
 
42
50
  ### Mitigating GHSA-cg9x-2vfm-3j58 before the runtime fix
43
51
 
data/docs/filesystem.md CHANGED
@@ -42,4 +42,5 @@ through `Microsandbox::Volume.fs(name)` / `VolumeInfo#fs` (a `VolumeFs`). See
42
42
 
43
43
  Paths are relative to the volume root; a leading `/` is the volume root, not the
44
44
  host root. A path containing a `..` segment is refused with `FilesystemError` in
45
- every operation.
45
+ every operation. Versions `0.7.0`–`0.17.0` did not refuse such paths and are
46
+ affected by GHSA-rh2c-vm8j-5gg6; see [SECURITY.md](../SECURITY.md).
@@ -8,7 +8,7 @@ description = "Ruby SDK native extension for microsandbox — secure, fast micro
8
8
  # returns this via env!("CARGO_PKG_VERSION") and version_spec.rb asserts equality.
9
9
  # The core-crate dependencies below stay on their own tag, which is
10
10
  # Microsandbox::RUNTIME_VERSION and moves independently of this version.
11
- version = "0.17.4"
11
+ version = "0.17.5"
12
12
  authors = ["Super Rad Company <development@superrad.company>"]
13
13
  repository = "https://github.com/superradcompany/microsandbox"
14
14
  license = "Apache-2.0"
@@ -8,7 +8,7 @@ module Microsandbox
8
8
  # Versioning section of the README for the full gem-to-runtime map. Must equal
9
9
  # the native ext's Cargo crate version (`Native.version`), enforced by
10
10
  # spec/unit/version_spec.rb.
11
- VERSION = "0.17.4"
11
+ VERSION = "0.17.5"
12
12
 
13
13
  # The upstream microsandbox runtime release this gem build embeds — the `tag`
14
14
  # pinned on the `microsandbox`/`microsandbox-network` git deps in
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: microsandbox-rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.4
4
+ version: 0.17.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - ya-luotao