Skip to content

fix(serve): prevent code injection in capture_dependencies#5792

Open
zhaoqizqwang wants to merge 1 commit intoaws:masterfrom
zhaoqizqwang:model-builder-sec-fix
Open

fix(serve): prevent code injection in capture_dependencies#5792
zhaoqizqwang wants to merge 1 commit intoaws:masterfrom
zhaoqizqwang:model-builder-sec-fix

Conversation

@zhaoqizqwang
Copy link
Copy Markdown
Collaborator

fix(serve): prevent code injection in capture_dependencies path interpolation

capture_dependencies built a python -c script by f-string interpolating pkl_path and dest_path, both derived from a user-supplied model directory, directly into Python source. A directory name containing " could break out of the string literal and execute arbitrary Python via expression chaining (e.g. model" + __import__("os").system("...") + "), giving an attacker local code execution when a victim extracted a malicious tarball and passed it to ModelBuilder with dependencies={"auto": True}.

Use the !r conversion so repr() emits properly escaped Python string literals for both paths. Any embedded quotes, backslashes, or control characters are escaped, so the paths arrive at get_requirements_for_pkl_file as inert string constants rather than executable code.

…polation

capture_dependencies built a `python -c` script by f-string interpolating
pkl_path and dest_path, both derived from a user-supplied model directory,
directly into Python source. A directory name containing `"` could break out
of the string literal and execute arbitrary Python via expression chaining
(e.g. `model" + __import__("os").system("...") + "`), giving an attacker
local code execution when a victim extracted a malicious tarball and passed
it to ModelBuilder with dependencies={"auto": True}.

Use the !r conversion so repr() emits properly escaped Python string
literals for both paths. Any embedded quotes, backslashes, or control
characters are escaped, so the paths arrive at get_requirements_for_pkl_file
as inert string constants rather than executable code.

Affects Linux/macOS; Windows was not exploitable because `"` is an invalid
filename character on NTFS. Reported via AWS Vulnerability Reporting Program
(P414309851, CWE-94).
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.

2 participants