Insertion of Sensitive Information Into Sent Data
The product sends data to another actor, but this data contains sensitive information that should not be accessible to that actor.
An attacker may be able to intercept or receive data that contains sensitive information, such as credentials, tokens, or internal system details, that were not intended for them.
How to fix this vulnerability
Prevention strategies for Insertion of Sensitive Information based on 3 Shoulder detection rules.
Validate webhook URLs against an allowlist and never send internal credentials to user-controlled endpoints
- func webhook(w http.ResponseWriter, r *http.Request) { - endpoint := r.FormValue("webhook_url") - req, _ := http.NewRequest("POST", endpoint, nil) - req.Header.Set("X-API-Key", os.Getenv("INTERNAL_API_KEY")) + var allowedDomains = map[string]bool{ + "api.slack.com": true, + "hooks.stripe.com": true, + } + + func webhook(w http.ResponseWriter, r *http.Request) { + endpoint := r.FormValue("webhook_url") + parsed, err := url.Parse(endpoint) + if err != nil || !allowedDomains[parsed.Host] { + http.Error(w, "Untrusted domain", 400) + return + } + req, _ := http.NewRequest("POST", endpoint, body) + req.Header.Set("X-Webhook-Secret", userWebhookSecret) client := &http.Client{} client.Do(req) }
Validate webhook URLs against a domain allowlist and never send internal credentials
- app.post('/webhook/register', async (req, res) => { - await fetch(req.body.webhookUrl, { - headers: { 'Authorization': `Bearer ${process.env.API_KEY}` } + const ALLOWED_DOMAINS = ['api.slack.com', 'hooks.stripe.com']; + + app.post('/webhook/register', async (req, res) => { + const url = new URL(req.body.webhookUrl); + if (!ALLOWED_DOMAINS.includes(url.hostname)) { + return res.status(400).json({ error: 'Untrusted domain' }); + } + await fetch(url, { + headers: { 'X-Webhook-Secret': req.body.webhookSecret } }); });
Find vulnerabilities in your code
Use Shoulder to scan your codebase for Insertion of Sensitive Information Into Sent Data patterns. 3 rules.
# Scan with Shoulder CLI npx @shoulderdev/cli trust --cwe=201 # Or scan entire project npx @shoulderdev/cli trust .
Detection Rules (3)
What to watch for in code reviews
These patterns indicate potential Insertion of Sensitive Information Into Sent Data vulnerabilities. Look for these during code reviews and security audits.
Scan your codebase for Insertion of Sensitive Information Into Sent Data
Shoulder CLI finds vulnerable patterns across your entire codebase.