Skip to content

release: v1.1.19 — strict ACL writability decoupled from process elevation#39

Merged
tunelko merged 12 commits into
mainfrom
develop
Jun 9, 2026
Merged

release: v1.1.19 — strict ACL writability decoupled from process elevation#39
tunelko merged 12 commits into
mainfrom
develop

Conversation

@tunelko

@tunelko tunelko commented Jun 9, 2026

Copy link
Copy Markdown
Owner

Changes in this version

Unified writability criterion across all surfaces (Scan, Wizard, AttackPath, RuntimeTrace, Scorer, Procmon, VerdictBadge). The DACL inspection is now the single source of truth — decoupled from the DllSidecar process token, so the answer is the same whether DllSidecar runs elevated or not.

Fixes the long-standing false "writable" tag on C:\Program Files\… directories: the previous WriteRights mask included FullControl/Modify, both of which carry read bits — any READ-only ACE (e.g. BUILTIN\Users:(RX)) matched it and falsely flipped UsersWrite=true. The new mask checks only the bits that actually grant write or the ability to grant oneself write (CreateFiles / CreateDirectories / Delete / ChangePermissions / TakeOwnership / GENERIC_ALL / GENERIC_WRITE).

The 3-tier classification — AdminOnly / OwnerOnly / Open — is now visible everywhere as LOCKED / OWNER / OPEN (Wizard), admin / owner / LOW-PRIV (Scan, AttackPath), and the strict Y/blank in the Runtime Trace W column.

tunelko and others added 12 commits May 30, 2026 10:18
… ci]

The TryLateAdopt path was probing every unknown PID via Win32 and
adopting on name/path match, causing collateral pickups of unrelated
processes (git-bash etc.) during long traces. Drop it: keep only the
strict ProcessStart-time adoption (consent.exe + tracked-target image/
name match). bcrypt-style detection still works via ProcessStart for
consent.exe.

Also tighten ElevationTransitionDetectorTests carrier seed to use
UsersWrite=true (DACL signal) instead of CurrentUserWrite=true (probe
signal). The new IsUserWritable drops CurrentUserWrite under host
elevation, so the probe-based seed failed on CI runners which run as
Administrator.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…uncher false positives [skip ci]

Battle.net and similar launchers spawn same-name children with strict
temporal ordering but no UAC handoff. The pure-heuristic detector
flagged these as transitions. Add an optional pidIntegrity map: when
present (live ETW + EtwResultConverter paths), require child PID at
High/System IL AND strictly above parent IL. CSV-only path keeps the
heuristic since ProcMon doesn't expose token IL.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…g [skip ci]

PrivescPage carrier handoff banner (header fields, observation, attack
steps, "+N more" suffix, "EXPLOITATION CHAIN" / "ATTACK STEPS" section
titles) and the RuntimeTracePage "discard previous trace" confirmation
dialog were still in Spanish. All translated to English so the UI is
consistent end to end.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…ation [skip ci]

Unified writability criterion across all surfaces (Scan, Wizard, AttackPath,
RuntimeTrace, Scorer, Procmon, AttackPath badge, VerdictBadge). Single source
of truth: DACL inspection via well-known SIDs + owner SID, decoupled from the
DllSidecar process token. Fixes false "Y" / "Open" on Program Files when
DllSidecar runs elevated.

- DirectoryPermissions: 3-tier WriteTier (AdminOnly/OwnerOnly/Open) + OwnerHasWrite
- DirectoryAclChecker: tightened WriteRights mask (was matching RX rules via
  FullControl/Modify aggregates that share read bits); filter TrustedInstaller
  (S-1-5-80-*), AppContainer (S-1-15-*), CREATOR OWNER/GROUP; capture owner SID
- ExploitabilityScorer: OwnerOnlyWritable +2 / +1 path (per-user portable)
- UI: OPEN / OWNER / LOCKED badges in Wizard, LOW-PRIV / owner / admin labels
  in Scan & AttackPath, W column tooltip explaining strict semantics

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@tunelko tunelko merged commit f5802bb into main Jun 9, 2026
4 checks passed
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