Skip to content

TacSubAuth: refuse a network logon without a SAM record - #3

Merged
Nobrac merged 2 commits into
mainfrom
fail-closed-without-sam-record
Oct 15, 2026
Merged

Nobrac merged 2 commits into
mainfrom
fail-closed-without-sam-record

Conversation

@Nobrac

@Nobrac Nobrac commented Oct 15, 2026 •

Copy link
Copy Markdown
Owner

Before: when MSV1_0 called the filter without a USER_ALL_INFORMATION, Decide() returned STATUS_SUCCESS for every logon, network logons included.

After: a network logon to this machine without a SAM record is refused with STATUS_INVALID_WORKSTATION and a warning (event 210). Non-network and pass-through logons keep their usual answer.

Without the record there is no RID, so the filter cannot tell whether the account is enrolled, and "could not tell" must not come out as "no objection" on the path the filter exists for.

How: one branch at the top of Decide() and a new Verdict::NoRecord. tests/native/test_lsa.cpp now expects the refusal and checks that interactive and pass-through logons without a record are still allowed. make -C tests/native passes.

Also in this PR: actions/checkout to v5 and upload-artifact to v6, the first versions that run on Node 24. ilammy/msvc-dev-cmd@v1 has no Node 24 version yet and still warns.


Generated by Claude Code

Decide() returned STATUS_SUCCESS when MSV1_0 passed no USER_ALL_INFORMATION.
Without the record there is no RID, so the filter cannot tell whether the
account is enrolled, and "could not tell" must not come out as "no
objection" on a network logon. Non-network and pass-through logons keep
their usual answer.
@Nobrac
Nobrac merged commit d61192f into main Oct 15, 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