PyPI / websockets / 17.3
websockets 17.3
- Source
- https://github.com/python-websockets/websockets
- Tag scanned
17.3- Compared with
17.2(0 signals introduced since)- Files
- 299 scanned, 53 skipped (binary, oversized, or unrecognised)
- Signals
- 1 critical · 0 warn · 43 info
- Scan time
- 28.2 s
- LLM review
- Reviewed by claude-haiku-5-5 (Anthropic): 35 of 35 warn and critical signals; 34 demoted to info.
- Disclude version
- 4.1.0
- Scanned (UTC)
- 2026-10-21 23:29
Signals
Ordered by severity, then signals introduced in this release. Hidden characters are shown as ⟨U+…⟩.
-
= =likely benign Experiment script builds a shell command from commit SHAs and runs it with shell=True.Reasoning
The command is built from a SHA obtained from the GitHub API and a template, then run with shell=True. That is a real injection-risk pattern, but the input comes from a repository's own commit history in a benchmark script, with no sign of deliberate malice or obfuscation.
-
⟨U+00A0⟩ ⟨U+00A0⟩ ⟨U+00A0⟩likely benign Indented git commit output in a Heroku deployment tutorial contains a non-breaking space.Reasoning
The flagged character is a non-breaking space in indentation of a pasted git command transcript in RST documentation. This is a rendering or copy-paste artifact in a benign tutorial, not an obfuscation technique.
-
⟨U+00A0⟩ ⟨U+00A0⟩ ⟨U+00A0⟩ ⟨U+00A0⟩likely benign Git output lines in the Heroku tutorial include a non-breaking space in indentation.Reasoning
Same as the other heroku.rst findings: a non-breaking space in the indentation of documented git output. It has no executable effect and fits ordinary documentation formatting.
-
⟨U+00A0⟩ ⟨U+00A0⟩ ⟨U+00A0⟩likely benign Git output in the Heroku tutorial has a non-breaking space in indentation.Reasoning
A raw-pass whitespace signal on documentation prose containing git output. The pattern is common in copied terminal output and is not a meaningful threat.
-
⟨U+00A0⟩ ⟨U+00A0⟩likely benign Git output in the Heroku tutorial has a non-breaking space in indentation.Reasoning
Same non-breaking-space indentation in a documentation transcript of git output. Raw whitespace anomalies in RST docs have a high false-positive rate and this one is benign.
-
⟨U+00A0⟩likely benign Git push output in the Heroku tutorial has a non-breaking space in indentation.Reasoning
A non-breaking space in the indentation of a git push transcript in documentation. It is cosmetic and does not indicate hidden instructions or code.
-
⟨U+00A0⟩ ⟨U+00A0⟩ ⟨U+00A0⟩likely benign Git output in the Koyeb tutorial includes a non-breaking space in indentation.Reasoning
Non-breaking space in indentation of documented git output in a Koyeb deployment tutorial. It is a benign formatting artifact.
-
⟨U+00A0⟩ ⟨U+00A0⟩ ⟨U+00A0⟩ ⟨U+00A0⟩likely benign Git output in the Koyeb tutorial has a non-breaking space in indentation.Reasoning
Same non-breaking-space indentation in a documented git transcript. This is a raw-pass false positive in documentation.
-
⟨U+00A0⟩ ⟨U+00A0⟩ ⟨U+00A0⟩likely benign Git output in the Koyeb tutorial has a non-breaking space in indentation.Reasoning
Non-breaking space in indentation of a documented command transcript. It has no execution path and is benign.
-
⟨U+00A0⟩ ⟨U+00A0⟩likely benign Git output in the Koyeb tutorial has a non-breaking space in indentation.Reasoning
Same benign non-breaking-space formatting artifact in a Koyeb tutorial transcript.
-
dismissed Documentation transcript of a websocket client session was misparsed as a shell redirect to a file named id.
Reasoning
The `id` in the flagged redirect is a URL placeholder (<id>) inside a websocket URL. The '>' is a client prompt or output marker in a transcript, not a shell redirect. The critical PATH-hijack label is a parser misreading of documentation text.
-
dismissed Websocket client transcript in the Koyeb docs was misread as a redirect into a file named id.
Reasoning
Same pattern: the '>' is a websocket REPL prompt and '<id>' is a placeholder in a URL. No actual file write or PATH manipulation occurs.
-
dismissed Websocket session transcript in the Koyeb docs was misread as a redirect to a file named id.
Reasoning
The flagged text is a URL placeholder and a client prompt in a documented session. The shell-redirect interpretation is a false positive.
-
dismissed Tutorial transcript showing a websocket client session was misparsed as a redirect to a file named id.
Reasoning
The `<id>` placeholder sits in a websocket URL and the '>' is a REPL prompt in a tutorial transcript. Nothing is written to a file and no PATH is altered.
-
=likely benign Experiment script runs a fixed git rev-parse command through the shell.Reasoning
The command is a fixed literal string (git rev-parse origin/main), so shell=True carries no injection from external input. It is an ordinary, if unnecessary, use of subprocess in an experiment script.
-
# PyPI disables the "raw" directive. Remove this section of the README.likely benign setup.py execs the package's own version.py to read __version__.Reasoning
The exec runs the package's own src/websockets/version.py read from the project tree during setup. It is a common version-loading idiom, not hidden payload execution, though exec on a file read is a pattern worth noting.
-
likely benign Empty os.system call on Windows to enable ANSI terminal colors.
Reasoning
Calling os.system with an empty string on win32 is a known trick to enable ANSI escape handling in the Windows console. It has no malicious effect.
-
info
warn→ info by reviewdecoder-decompress-payloadsrc/websockets/extensions/permessage_deflate.py:72:28=likely benign zlib decompressobj used for WebSocket permessage-deflate decoding.Reasoning
This is a standard zlib decompressobj used to implement the permessage-deflate WebSocket extension (RFC 7692). It decompresses network frame data, not an embedded payload.
-
assert < , = returnlikely benign __import__ used by a lazy-import helper to resolve relative module paths.Reasoning
This is a lazy_import helper resolving a module name from a relative-import source string and level. The arguments come from library code, not untrusted input, and the module is then getattr'd for a named attribute.
-
= await == :likely benign Test server evals client messages to return computed values during tests.Reasoning
This is a test fixture server that deliberately evals client-sent expressions to check latency and behavior. Evaluating network input is unsafe if deployed, but here it is a test-only harness.
-
await = awaitlikely benign Test evaluates the server's latency reply.Reasoning
The test sends the literal string 'ws.latency' to a test server and evals the reply to check a numeric latency value. This is test scaffolding with no malicious intent.
-
await =likely benign Test evaluates the server's latency reply.Reasoning
Same test pattern as the preceding finding: evaluating a latency reply from the test server it controls.
-
await =likely benign Test evaluates the server's latency reply.Reasoning
Same test pattern: evaluating a latency reply from the test server it controls.
-
# Control frames aren't encoded or decoded.likely benign Round-trip test of extension repr via eval.Reasoning
eval(repr(extension)) is a round-trip check that the extension's repr reconstructs an equal object. It operates on the project's own object.
-
=likely benign Test evals a numeric close_timeout reply from its test server.Reasoning
The test evals a close_timeout value sent by its own test server to assert a numeric setting. This is test code with no malicious intent.
-
=likely benign Test evals a numeric close_timeout reply from its test server.Reasoning
Same close_timeout round-trip test pattern as the preceding finding.
-
=likely benign Test evals a numeric close_timeout reply from its test server.Reasoning
Same close_timeout round-trip test pattern as the preceding findings.
-
= == :likely benign Sync test server evals client messages to return computed values.Reasoning
Sync counterpart of the asyncio test server that evals client expressions for latency testing. Test-only harness, unsafe pattern but no malicious intent.
-
=likely benign Sync test evaluates the server's latency reply.Reasoning
Test sends 'ws.latency' and evals the reply to check latency. Test scaffolding only.
-
=likely benign Sync test evaluates the server's latency reply.Reasoning
Same sync latency test pattern as the preceding finding.
-
=likely benign Test code evaluates a latency expression returned over a websocket by the test's own server.Reasoning
The eval runs on a reply received from the test's own client, in a test that asks the server for a 'ws.latency' value. It is a test-harness pattern on localhost, not an obfuscated payload. The residual concern is that eval of network input is unsafe if the server were exposed.
-
, , , , -
, , , ] -
, , , ] -
, , ] ] -
, , ] ] -
= -
= -
-
, , ] -
= await == :likely benign Test fixture server evaluates expressions sent over a websocket.Reasoning
This is a test fixture server that evals each message received on its websocket, alongside a '/crash' path, which suggests a deliberately simple test endpoint. The eval is of network input, so it would be dangerous if deployed, but nothing in the snippet points to a dropper or hidden logic.
-
await = awaitlikely benign Async test evaluates a latency value returned by its own test server.Reasoning
The eval evaluates the 'ws.latency' response from the test's own server, and the assertions show it checks a numeric latency. This is ordinary test code.
-
await =likely benign Async test evaluates a latency reply and asserts it is positive.Reasoning
Same pattern as the other test: eval of the 'ws.latency' reply from the local test server, followed by a greater-than-zero assertion. No malicious indicators.
-
await =likely benign Async test evaluates a latency reply from its own test server.Reasoning
Repeats the same eval of a 'ws.latency' reply from the local test server, with a zero assertion. Legitimate test code.
Reproduce This Scan
Run disclude locally to verify. Add --format sarif for SARIF output. Add --llm (with an API key in the environment) to include the LLM review.
&&