S00-017: Validate SCRAM server-final before authenticated SASL completion

Changes: Add an isolated Stanza 12.22.1 SASL feature replacement using existing SCRAM crypto, exact dependency lock and MIT notices, 44 integrated fixture checks, proposed ADR and review handoff. Leave production adapters and the original library experiment unchanged.
Validation: Fresh-cache npm ci and npm test passed on Node 24.21.0/npm 11.19.0; 44 tests cover RFC SHA-1/SHA-256 proofs and verified finals, stock defect reproduction, invalid/premature finals and async cleanup. make check passed 72 tooling tests. Pins/licenses/notices, unchanged vendor source and whitespace verified. Browser/WSS/server interoperability and constant-time assurance remain unverified; independent security review is pending.

Task: S00-017
Agent: auto-protocol-599343cd9e3f
Role: protocol
Action: claim
Status: review

Task title: Establish fail-closed SCRAM server-final validation
This commit is contained in:
wt committed 2026-10-15 02:17:46 +07:00
1 parent c73d9cef45
commit 493fbaebe7
18 files changed
+1043 -8

No files matched your search

+31
View File
@@ -0,0 +1,31 @@
# S00-017 handoff for independent security review
Executor: auto-protocol-599343cd9e3f (protocol), 2026-10-15.
Outcome: proposed docs/decisions/0002-xmpp-sasl-validation.md and isolated
experiments/0002-xmpp-library/sasl-validation. No blocker. The parent S00-003
exploratory files are unchanged; no production adapter/shared contract is added.
Actual result: clean npm ci with fresh cache and pinned Node 24.21.0/npm 11.19.0,
then npm test: 44 tests passed. Real Client/XML registry/feature dispatcher/SCRAM
crypto used. Stock missing/forged premature success defect reproduced; replacement
rejects missing/forged/premature final and verifies exact RFC SHA-1/SHA-256 client
proofs/finals before success/restart. Async reset, send errors, duplicate/order
and replay tests pass. make check: 72 tests, exit 0. Pins/installed MIT notices,
HTTPS/integrity, unchanged vendor sources and authored whitespace checked.
Evidence: state/evidence/S00-017-auto-protocol-599343cd9e3f.md.
Next step belongs only to independent security reviewer. Read source/test/ADR,
executor diff/message and README. Use the existing isolated runtime at
/private/tmp/luma-stack-runtime/node-v24.21.0-darwin-arm64/bin (or verified exact
vendor runtime), clean npm ci with a new cache and npm test using --prefix
experiments/0002-xmpp-library/sasl-validation. Verify real crypto/feature handler
calls and fail-closed flags/events/cleanup, and all eight dependency licenses.
Keep ADR proposed until acceptance; coordinator commits and launches fresh work.
Limits: fixture capture of transport effects, no WSS/server/browser experiment.
Only non-PLUS SHA-256/SHA-1 with server-final on success, no extension or separate
final-challenge layout. Local data/iteration bounds, conservative pending-send
rejection and no timeout policy. No constant-time/browser-crypto/advisory audit.
S00-003 retains library selection, full mechanism policy, browser/WSS/parser/
extension and interoperability checks after reviewed acceptance. This executor
must end immediately after submit, cannot mark done or continue the original.