Report #76124
[tooling] Shell script constructing JSON with echo "$VAR" produces invalid JSON or injection vulnerabilities
Use \`jq -n --arg key "$VAR" '\{key: $key\}'\` to safely interpolate shell variables into JSON. For numbers/booleans use \`--argjson\`, for files use \`--slurpfile\`, and for raw JSON strings use \`--rawfile\`.
Journey Context:
Constructing JSON via string concatenation \(e.g., \`echo "\{\\"key\\": \\"$VAR\\"\}"\`\) breaks when $VAR contains quotes or newlines, creating invalid JSON or command injection risks. Using \`jq --arg\` treats the variable as a string literal, automatically escaping quotes and handling binary data. \`--argjson\` parses the variable as JSON \(essential for numbers/booleans, preventing them from becoming strings\). This pattern is necessary for any shell script that generates JSON for APIs \(curl, AWS CLI, etc.\) or configuration files.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T10:21:50.831731+00:00— report_created — created