Repository navigation
Zoom and Zotero read broken because codesign --strict also refuses Finder attributes, and the seal was intact - #57
Open
opencdlee-dotcom wants to merge 1 commit into
Open
opencdlee-dotcom wants to merge 1 commit into
opencdlee-dotcom wants to merge 1 commit into
Conversation
…Finder attributes, and the seal was intact
`_classify_mac` filed every non-zero `codesign --verify --strict` that did
not say "not signed" as `broken`, which is in suspicious_sig() and gates the
process, listener and beacon sensors at HIGH. On this Mac, 2026-09-23, Zoom
(BJ4HAAB9B3) and Zotero (8LAYR367YV) both fail --strict with
resource fork, Finder information, or similar detritus not allowed
and pass the plain verify: full Developer ID chains, intact seals, Finder
xattrs inside the bundle. 36 HIGH interrupts in 30 days came from that.
A strict failure that names detritus (_STRICT_DETRITUS_MARKERS) is now asked
once more without --strict, and the plain verify decides:
- passes -> the chain's trust stands; the verdict records `strict: detritus`
- fails with a reason -> `broken`, as before
- times out, or fails silently -> the PR #52 non-answer: `unknown`,
probe_failed, counted, never cached
Every other strict failure ("code or signature have been modified", "a sealed
resource is missing or invalid") is `broken` exactly as before and is not
re-asked. The text only picks which failures earn the second probe; the plain
verify is the verdict, so Finder info added to a modified binary cannot
launder it (live test: a byte-flipped copy of /bin/ls with FinderInfo stays
`broken`).
_SIGCACHE_LOGIC_VERSION 3 -> 4, so the cached `broken` on those two binaries
is re-probed on the next scan instead of served until their next update.
test_false_alarm_batch_20260922's version pin becomes >= 3 so the bump does
not break its guarantee.
No new exit: _close_reverified_incidents already closes an OPEN signal
incident gated on an untrusted verdict once the same path re-classifies as a
publisher at a non-risky location. The live Zoom/Zotero incidents were
`outbound` beacons on /Applications paths (all already closed); the new tests
drive that shape through the real parser into the exit, and pin that a real
tamper stays OPEN and that the scan that opens an incident cannot close it.
tests/test_codesign_detritus.py: mocked-codesign parser tests (every body),
the exit through record_security_state (mac vocabulary), and live tests on a
real Mac built from /bin/ls copies plus Zoom/Zotero where installed.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Precision plan step S1 (
PRECISION-PLAN-2026-09-23.md): the codesign parser.The defect
_classify_macfiled every non-zerocodesign --verify --strictthat did not say "not signed" asbroken.brokenis insuspicious_sig(), so it gates the process, listener and beacon sensors at HIGH. On the reference Mac today:--verify --strict--verify/Applications/zoom.us.app/Contents/MacOS/zoom.usresource fork, Finder information, or similar detritus not allowed/Applications/Zotero.app/Contents/MacOS/zoteroThe complaint is about Finder xattrs inside the bundle. The seal is intact, and 36 HIGH interrupts in 30 days came from this. A real tamper reads differently and fails without
--stricttoo.The fix
When a strict failure names detritus (
_STRICT_DETRITUS_MARKERS),_classify_macasks once more without--strict, and the plain verify decides:strict: detritusbroken, as beforeunknown,probe_failed, counted, never cached)Every other strict failure is
brokenexactly as before and is not re-asked. The text only selects which failures get the second probe. The plain verify is what decides, so adding Finder info to a modified binary cannot launder it._SIGCACHE_LOGIC_VERSIONgoes from 3 to 4, so cachedbrokenverdicts are re-probed on the next scan. Without the bump they would be served until the app's next update.test_false_alarm_batch_20260922's exact pin== 3becomes>= 3(required by the bump).No new exit.
_close_reverified_incidentsalready closes an OPEN signal incident gated on an untrusted verdict once the same path re-classifies as a publisher at a non-risky location. The live Zoom/Zotero incidents wereoutboundbeacons on/Applicationspaths, and all of them are already closed. The new tests push that shape through the real parser into the exit.Tests:
tests/test_codesign_detritus.pydeveloper-idwithstrict: detritusbrokenbroken-dvtimeouts are unchangedbrokenis re-probedrecord_security_state(mac vocabulary):re-verified: … developer-idresolutionsys.platform == "darwin" and aegis.IS_MAC):/bin/lswithcom.apple.FinderInforeproduces the exact detritus message and classifiesapplebrokendeveloper-idwhere they are installed🤖 Generated with Claude Code