Tainted flow: 'user_id' from os.environ.get (line 96, credential/environment) → requests.post (network output)
Critical
- Category
- Data Flow
- Content
返回: {"ok": bool, "balance": float, "payment_url": str|None} """ try: resp = requests.post( f"{BILLING_API_URL}/api/v1/billing/charge", headers=HEADERS, json={- Confidence
- 99% confidence
- Finding
- The function named as payment verification performs an actual charge against a remote billing API using an environment-derived user identity. This creates a hidden side effect where simply starting the skill can debit an account without clear prior user consent, and anyone controlling or misconfiguring SKILLPAY_USER_ID could cause charges against the wrong account.
