Skip to content

Commit 9b8cbda

Browse files
committed
fix: set private trace mask before namespace tracer startup
1 parent 1775fbc commit 9b8cbda

4 files changed

Lines changed: 12 additions & 3 deletions

File tree

‎AI_NOTES.md‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# Synthetic Native Login Protocol - 2026-10-14
22

3+
- Separate-trace no-client preflight refused trace metadata before compilation.
4+
Set077 explicitly in the trusted namespace setup before the tracer starts,
5+
rather than relying on the host wrapper mask or the later Python setup.
6+
Retained0600 admission and added bounded mode/owner/link diagnostics; the
7+
diagnostic regression failed first. All53 local tooling cases pass; actual
8+
retry pending, not an authorization/runtime readiness claim.
9+
310
- The constrained native process reached the final syscall audit after the
411
cancel scenario's initialize/code/poll/wrong-ID/correct-ID/repeat/silence checks.
512
The final audit refused an execution record; protocol suite not passed. Split

‎tools/session_store/protocol_smoke.py‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,9 @@ def read_trace(prefix: Path) -> str:
156156
if (not re.fullmatch(re.escape(prefix.name) + r"\.[0-9]+", file.name)
157157
or not stat.S_ISREG(metadata.st_mode) or metadata.st_uid != os.geteuid()
158158
or stat.S_IMODE(metadata.st_mode) != 0o600 or metadata.st_nlink != 1):
159-
raise ValueError("process trace metadata rejected")
159+
raise ValueError(f"process trace metadata rejected: {file.name[:128]} "
160+
f"mode={stat.S_IMODE(metadata.st_mode):04o} uid={metadata.st_uid} "
161+
f"links={metadata.st_nlink}")
160162
total += metadata.st_size
161163
if total > 1024 * 1024:
162164
raise ValueError("trace byte budget exceeded")

‎tools/session_store/protocol_smoke.sh‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ timeout --signal=TERM --kill-after=5s 100s sudo -n setpriv --no-new-privs bwrap
5050
--ro-bind "$scratch/peer.pem" /work/peer.pem --ro-bind "$scratch/peer.key" /work/peer.key \
5151
--ro-bind "$scratch/wrong.pem" /work/wrong.pem --ro-bind "$scratch/wrong.key" /work/wrong.key \
5252
--chdir /work --clearenv --setenv PATH /usr/bin:/bin \
53-
-- /bin/sh -eu -c 'ip link set lo up; exec setpriv --reuid=65534 --regid=65534 --clear-groups \
53+
-- /bin/sh -eu -c 'umask 077; ip link set lo up; exec setpriv --reuid=65534 --regid=65534 --clear-groups \
5454
--bounding-set=-all --inh-caps=-all --ambient-caps=-all --no-new-privs \
5555
"$@"' session-setup "${check_command[@]}" > "$scratch/receipt.json" || {
5656
cat "$scratch/receipt.json"

‎tools/session_store/test_protocol_smoke.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ def test_per_process_trace_is_read_without_interleaved_syscalls(self):
213213
file.chmod(0o600)
214214
self.assertEqual(self.module.read_trace(prefix), "exec complete\nconnect complete\n")
215215
(prefix.parent / "trace.12").chmod(0o644)
216-
with self.assertRaises(ValueError):
216+
with self.assertRaisesRegex(ValueError, "process trace metadata rejected.*mode=0644"):
217217
self.module.read_trace(prefix)
218218
(prefix.parent / "trace.12").chmod(0o600)
219219
(prefix.parent / "trace.12").write_bytes(b"x" * (1024 * 1024 + 1))

0 commit comments

Comments
 (0)