Skip to content

use SecureRandom for the multipart boundary and websocket key#2282

Open
madib06ops wants to merge 1 commit into
AsyncHttpClient:mainfrom
madib06ops:multipart-boundary-securerandom
Open

use SecureRandom for the multipart boundary and websocket key#2282
madib06ops wants to merge 1 commit into
AsyncHttpClient:mainfrom
madib06ops:multipart-boundary-securerandom

Conversation

@madib06ops

Copy link
Copy Markdown
Contributor

computeMultipartBoundary draws the boundary from ThreadLocalRandom, which the JDK documents as not cryptographically secure: every value is mix32 over a per-thread 64-bit seed that advances by the fixed constant GAMMA, so an observer who recovers that state reproduces the whole sequence the thread will emit. Part content is never escaped, so the boundary is the only separator, and a caller that puts attacker-controlled bytes in any one field (a proxied upload, a user-supplied form value) lets that attacker close the part early and append a forged Content-Disposition, which the receiving server parses as an extra form field. getWebSocketKey builds the 16-byte Sec-WebSocket-Key nonce from the same generator, and RFC 6455 section 10.3 asks for a strong source of entropy there. Both now use a ThreadLocal, the same idiom already used for the Digest cnonce in Realm and the SCRAM nonce in ScramEngine.

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