feat: verify S225 @g5n-dev bounty — NO, duplicate of S120#348
Open
xliry wants to merge 4 commits intopeteromallet:mainfrom
Open
feat: verify S225 @g5n-dev bounty — NO, duplicate of S120#348xliry wants to merge 4 commits intopeteromallet:mainfrom
xliry wants to merge 4 commits intopeteromallet:mainfrom
Conversation
… (#451) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…eld confirmed (#456) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Issue: #204
Submission: #204 (comment)
Author: @g5n-dev
Problem (in our own words)
S225 reports that
discovery.py:95-106auto-loads and executes arbitrary Python files from the scan target's.desloppify/plugins/directory viaimportlib.util.spec_from_file_location()+exec_module(), without user consent, sandboxing, or signature verification. This creates an RCE vector when scanning untrusted repositories.Evidence
desloppify/languages/_framework/discovery.py:95-106—load_all()globs*.pyfromget_project_root() / ".desloppify" / "plugins"and executes them viaspec.loader.exec_module(mod)with no validationdesloppify/base/discovery/paths.py—get_project_root()resolves to the scan target directoryFix
No fix needed — verdict is NO (duplicate of S120).
Verdict
Final verdict: NO
The vulnerability is real and well-described, but S120 (@optimus-fulcria, 2026-03-05T10:10:19Z) reported the identical issue — same file, same code lines, same vulnerability class — nearly 22 hours earlier. S126 and S146 also pre-date this submission.
Scores
Summary
The submission accurately identifies that
discovery.pyauto-loads arbitrary Python from.desloppify/plugins/without consent or sandboxing, creating an RCE vector. However, this exact vulnerability was reported by @optimus-fulcria as S120 approximately 22 hours earlier, making S225 a duplicate with no originality credit.Why Desloppify Missed This
exec_module()calls on user-controlled pathsexec_moduleon paths derived from user inputVerdict Files
Generated with Lota