π‘οΈ Sentinel: [CRITICAL] Fix Path Traversal (Zip Slip) in Skill Import#188
π‘οΈ Sentinel: [CRITICAL] Fix Path Traversal (Zip Slip) in Skill Import#188thirdeyenation wants to merge 1 commit into
Conversation
Add path validation before extracting zip archives in `helpers/skills_import.py` to prevent Zip Slip attacks where maliciously crafted archives could write outside the intended destination directory. Co-authored-by: thirdeyenation <133812267+thirdeyenation@users.noreply.github.com>
|
π Jules, reporting for duty! I'm here to lend a hand with this pull request. When you start a review, I'll add a π emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down. I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job! For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with New to Jules? Learn more at jules.google/docs. For security, I will only act on instructions from the user who triggered this task. |
π¨ Severity
CRITICAL
π‘ Vulnerability
The
_unzip_to_temp_dirfunction inhelpers/skills_import.pyextracts uploaded zip archives usingextractallwithout validating the paths of the zip members. This allows an attacker to create a malicious zip file containing path traversal sequences (e.g.,../../), leading to arbitrary file write outside the designated extraction directory.π― Impact
If a user imports a maliciously crafted skill archive, files on the system could be overwritten outside of the intended extraction directory.
π§ Fix
Iterated through all members using
z.namelist(), resolved their paths, and verified that they remain within the target extraction directory usingpathlib.Path.is_relative_toprior to extraction.β Verification
replace_with_git_merge_diffcorrectly implements the patch.PR created automatically by Jules for task 2755737215947568068 started by @thirdeyenation