Skip to content

docs(security): record that removal and the unsigned fallback were exercised - #152

Merged
ArangoGutierrez merged 1 commit into
mainfrom
docs/security-removal-exercised
Aug 19, 2026
Merged

docs(security): record that removal and the unsigned fallback were exercised#152
ArangoGutierrez merged 1 commit into
mainfrom
docs/security-removal-exercised

Conversation

@ArangoGutierrez

Copy link
Copy Markdown
Owner

SECURITY.md said removal from the UI and the unsigned-build fallback had not been exercised. Both were, on 2026-08-19, while closing #71. The paragraph understated what is known about the shipped build, in the one file a security-minded reader opens first.

Removal was sampled at 5 Hz across the click: SleepDisabled returned to 0 while the helper process was still running, and the helper was gone one sample later. Zero samples showed the hold set with the helper already gone. That is positive evidence rather than an absence, since the sampler caught the released state while the helper still ran, which a missed transient cannot manufacture.

The unsigned fallback was exercised the same day: a bundle presenting TeamIdentifier=not set offered no arming control and named the sudo route instead.

The limits travel with the claim, in the same terms the paragraph above already uses for the arm round trip: one run, one Mac, one date, and no test here re-runs either.

Also recorded, because it contradicts what the release checklist assumed: macOS keeps the app's entry in Login Items and Extensions after removal, since the helper's plist ships inside the bundle. sfltool dumpbtm still carries the daemon record afterwards. Removal retires the registration rather than erasing the record of it.

Testing done

swift test rc=0, 1239 tests in 12 suites, one pre-existing known issue.

Breaking changes

None. Documentation only.

…ercised

SECURITY.md said "Removing the helper from the UI has not been exercised, and
neither has the fallback an unsigned build takes." Both were exercised on
2026-08-19 while closing #71, so the paragraph understated what is known about
the shipped build.

Removal was sampled at 5 Hz across the click. SleepDisabled returned to 0 at one
sample while the helper process was still running, and the helper was gone at the
next. Zero samples showed the hold set with the helper already gone, which is the
stranding failure the documented order exists to prevent. That is positive
evidence rather than an absence: the sampler caught the released state while the
helper still ran, which a missed transient cannot manufacture.

The unsigned fallback was exercised the same day on the same Mac. A bundle
presenting TeamIdentifier=not set offered no arming control and named the sudo
route instead, which is the degrade path #71 required.

The limits are stated with the claim, in the same terms the paragraph above uses
for the arm round trip: one run, one Mac, one date, and no test here re-runs
either, because one needs a signed bundle plus a hand-approved registration and
the other needs an unsigned one.

Also recorded: macOS keeps the app's entry in Login Items and Extensions after
removal, because the helper's plist ships inside the bundle. Removal retires the
registration rather than erasing the record of it, and anything claiming the item
leaves that pane is wrong.

Signed-off-by: Carlos Eduardo Arango Gutierrez <eduardoa@nvidia.com>
@ArangoGutierrez
ArangoGutierrez merged commit b892b7f into main Aug 19, 2026
2 checks passed
@ArangoGutierrez
ArangoGutierrez deleted the docs/security-removal-exercised branch August 19, 2026 18:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant