tornado 6.6
- Source
- https://github.com/tornadoweb/tornado
- Artifact scanned
tornado-6.6.tar.gz- Compared with
tornado-6.5.10.tar.gz(5 signals introduced since)- Files
- 208 scanned, 23 skipped (binary, oversized, or unrecognised)
- Signals
- 1 critical · 0 warn · 19 info
- Scan time
- 20.7 s
- LLM review
- Reviewed by claude-haiku-5-5 (Anthropic): 19 of 19 warn and critical signals; 18 demoted to info.
- Disclude version
- 4.3.0
- Scanned (UTC)
- 2026-10-23 10:15
Signals
Ordered by severity, then signals introduced in this release. Hidden characters are shown as ⟨U+…⟩.
-
= =suspicious setup.py execs a file read at runtime to extract a version string.Reasoning
Module-scope exec of a file's contents into a namespace is unusual for setup.py and runs on every import of the package. A version-file reader normally parses with regex, so this is more suspicious than the usual pattern, but the file being executed is not shown and the code may just be reading its own version file.
-
info
warn→ info by reviewdecoder-decompress-payloadtornado/http1connection.py:855:36new in this release=likely benign Streaming decompression of HTTP response or request body data.Reasoning
Decompressing gzip or deflate data from an HTTP body with a max-length bound is the expected behaviour of an HTTP client/server library.
-
info
warn→ info by reviewdecoder-decompress-payloadtornado/test/api_test.py:368:16new in this release# Header lines. = =likely benign Test code decompresses a zlib-compressed test fixture.Reasoning
Decompressing a fixture file in a test for parsing a test data file is routine.
-
info
warn→ info by reviewdecoder-decompress-payloadtornado/test/property_test.py:385:17new in this releaselikely benign Test round-trips a message through zlib/gzip compression.Reasoning
A round-trip compress and decompress check in a test is a normal correctness assertion.
-
info
warn→ info by reviewdecoder-decompress-payloadtornado/test/util_test.py:49:26new in this release= =likely benign Test exercises bounded streaming decompression.Reasoning
Testing max_length-bounded decompression output and unconsumed_tail is a normal unit test.
-
# This works on cpython and pypy, but not jython. returnlikely benign Returns a zlib decompressobj for gzip-wrapped streams.Reasoning
Creating a decompressobj with gzip-wrapper window bits is a standard compatibility shim for decompressing gzip data.
-
dismissed A documentation example showing eval applied to a string literal.
Reasoning
The eval call sits in reStructuredText prose as an illustrative example of a callback pattern, not executable code in the package.
-
) = =likely benign Uses sys._getframe(0) to get the current module's filename for option definitions.Reasoning
Reading the caller's frame filename to locate the options-defining file is a standard pattern for config options. The anti-analysis label comes from generic co-occurrence, not from this code.
-
# from being applied to the generated code. =likely benign Compiles generated Python code from a template.Reasoning
Compiling generated template source is the core function of a template engine and the code is generated from the user's template.
-
likely benign Multi-line base64 test blob, likely compressed fixture data.
Reasoning
Raw-pass base64-like rows of compressed test data inside a test file are consistent with fixture payloads for compression tests, and raw findings have a higher false-positive rate.
-
-
= =likely benign Test uses sys._getframe to get its own filename.Reasoning
Retrieving the current file path inside a test to check option group membership is benign.
-
: = returnlikely benign Test helper that executes a code string in a local namespace.Reasoning
This helper execs a dedented test code string with explicit namespaces, a common pattern for testing code snippets in a test suite.
-
return =likely benign Dynamic import of a module name in a utility function.Reasoning
This is the standard import_object helper that resolves a dotted module path supplied by the developer, a documented library feature rather than a hidden payload loader.
-
= = returnlikely benign Dynamic __import__ of a parent module to fetch a named attribute.Reasoning
Dynamic import with fromlist to resolve an attribute from a dotted path is a normal import helper pattern.
-
# the string first to prevent that. =dismissed A compatibility helper in tornado's util.py that compiles and execs source code alongside a zlib import.Reasoning
The file imports zlib and calls exec/compile, but the snippet is the standard exec_in helper used for Python 2/3 compatibility in tornado. The compile call takes a source string with a fixed filename and dont_inherit, which is ordinary library behavior. The co-occurrence heuristic fires on a legitimate pattern and no encoded payload or dropper chain appears.
-
# the string first to prevent that. =likely benign compile() of a caller-supplied source string inside tornado's exec_in compatibility helper.Reasoning
compile() is called on a code argument inside tornado's exec_in helper, which exists to run template or module source in a supplied namespace. The source comes from the caller, not from an embedded or decoded blob, and the call is a known tornado idiom.
-
=likely benign exec of a caller-supplied code object inside tornado's exec_in helper.Reasoning
exec(code, glob, loc) is the second half of tornado's exec_in helper, which runs source passed in by the library's own callers with explicit globals and locals. The non-literal argument is expected for this function's purpose and the snippet shows no decoding or network activity.
-
= =likely benign Stack-frame walk in tornado's web.py to find the module directory for default template path resolution.Reasoning
sys._getframe(0) is used to walk the stack and locate the directory of tornado/web.py when no template_path is set, so templates resolve relative to the calling application. This is a documented, legitimate use of frame introspection in a web framework.
-
returndismissed WebSocket permessage-deflate decompressor wrapper in tornado's websocket module.Reasoning
The code creates a zlib decompressobj with negative wbits for the WebSocket permessage-deflate extension (RFC 7692) and exposes a decompress method. Data is the wire payload from the peer, not an embedded blob, so this is ordinary protocol compression.
Reproduce This Scan
Run disclude locally to verify. These commands scan the published file; the "new in this release" marks come from comparing it with the previous release's file, which they don't repeat. Add --format sarif for SARIF output. Add --llm (with an API key in the environment) to include the LLM review.
|
&&