Skip to content

fix: prevent shell injection by using execFileSync/execFile instead of execSync/exec - #2

Open
Muntasir1315 wants to merge 1 commit into
geco:mainfrom
Muntasir1315:main
Open

fix: prevent shell injection by using execFileSync/execFile instead of execSync/exec#2
Muntasir1315 wants to merge 1 commit into
geco:mainfrom
Muntasir1315:main

Conversation

@Muntasir1315

Copy link
Copy Markdown

Problem

User message text was passed through execSync and exec which use /bin/sh to run commands. The mempalaceSearch function only escaped double quotes, leaving newlines, backslashes, backticks, and other shell metacharacters unhandled. When a message contained certain characters, the shell interpreted them as syntax rather than data.

Fix

Replaced all three execSync/exec calls with execFileSync/execFile, which bypass the shell entirely and spawn processes directly with argument arrays. No shell involvement means user message text is never interpreted as shell syntax.

Changes

  • runPython: execSync to execFileSync with argument array
  • mempalaceSearch: execSync to execFileSync with argument array
  • doDbSync async mine: exec to execFile with argument array

No functional or behavioral changes.

…f execSync/exec

User message text was passed through shell command interpolation with
insufficient escaping (only double quotes escaped). This caused shell
syntax errors when messages contained certain characters like newlines
followed by closing parentheses.

Replaced all 3 subprocess calls:
- runPython: execSync -> execFileSync with argument array
- mempalaceSearch: execSync -> execFileSync with argument array
  (removed the query.replace shell escaping entirely)
- doDbSync async mine: exec -> execFile with argument array

No shell involvement for any subprocess means user message text is
never interpreted as shell syntax. No functional or behavioral changes.
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