Fix concurrent SSH authentication state and redact secrets#102
Open
binaryfire wants to merge 1 commit into
Open
Fix concurrent SSH authentication state and redact secrets#102binaryfire wants to merge 1 commit into
binaryfire wants to merge 1 commit into
Conversation
Move keyboard-interactive password state from a process-global pointer to the owning SSH session so concurrent authentication attempts cannot share credentials. Copy callback responses using the session allocator contract and clear borrowed password state immediately after authentication. Mark authentication secrets with SensitiveParameter metadata on PHP 8.2 and newer. Add PHPT coverage for sensitive and ordinary parameter metadata, trace redaction, and the distinction between in-memory private keys and key paths.
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.
Summary
SensitiveParametermetadata on PHP 8.2+The old global password pointer allowed concurrent authentication attempts to observe each other's credentials. Session-local state removes that shared mutable state without changing the public API.
The PHPT covers parameter metadata and trace redaction. The concurrency property follows from the state ownership change; the test suite does not have a deterministic multi-threaded SSH harness. Response initialization also avoids depending on libssh2's current zero-allocation behavior.
Testing
masterbuild