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 +4 -4
- data/CHANGELOG.md +53 -1
- data/Cargo.lock +52 -34
- data/README.md +3 -2
- data/SECURITY.md +8 -0
- data/docs/filesystem.md +2 -1
- data/ext/microsandbox/Cargo.toml +1 -1
- data/lib/microsandbox/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3c597286c232618bfceb4eeaa3fb283944fc51a4ff0d453394f7ce413a25301d
|
|
4
|
+
data.tar.gz: aa6f046fb175fd5a987c35ce190f73676fc83e9de1171b7f64ff45b6e9ec59a9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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.
|
|
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.
|
|
434
|
+
version = "0.4.51"
|
|
435
435
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
436
|
-
checksum = "
|
|
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.
|
|
1132
|
+
version = "0.4.46"
|
|
1133
1133
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1134
|
-
checksum = "
|
|
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.
|
|
1145
|
+
version = "0.4.34"
|
|
1146
1146
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1147
|
-
checksum = "
|
|
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.
|
|
1378
|
+
version = "0.7.10"
|
|
1379
1379
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1380
|
-
checksum = "
|
|
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.
|
|
1435
|
+
version = "0.4.6"
|
|
1436
1436
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1437
|
-
checksum = "
|
|
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.
|
|
3171
|
+
version = "0.2.190"
|
|
3172
3172
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3173
|
-
checksum = "
|
|
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.
|
|
3292
|
+
version = "0.9.3"
|
|
3293
3293
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3294
|
-
checksum = "
|
|
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.
|
|
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.
|
|
5354
|
+
version = "0.103.16"
|
|
5355
5355
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
5356
|
-
checksum = "
|
|
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.
|
|
5724
|
+
version = "1.0.154"
|
|
5725
5725
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
5726
|
-
checksum = "
|
|
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.
|
|
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.
|
|
6535
|
+
version = "1.54.1"
|
|
6536
6536
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
6537
|
-
checksum = "
|
|
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.
|
|
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.
|
|
7152
|
+
version = "1.0.11"
|
|
7153
7153
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
7154
|
-
checksum = "
|
|
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.
|
|
7165
|
+
"webpki-roots 1.0.11",
|
|
7166
7166
|
]
|
|
7167
7167
|
|
|
7168
7168
|
[[package]]
|
|
7169
7169
|
name = "webpki-roots"
|
|
7170
|
-
version = "1.0.
|
|
7170
|
+
version = "1.0.11"
|
|
7171
7171
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
7172
|
-
checksum = "
|
|
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.
|
|
7927
|
+
version = "2.1.2+zstd.1.5.7"
|
|
7910
7928
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
7911
|
-
checksum = "
|
|
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.
|
|
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).
|
data/ext/microsandbox/Cargo.toml
CHANGED
|
@@ -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.
|
|
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"
|
data/lib/microsandbox/version.rb
CHANGED
|
@@ -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.
|
|
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
|