hpr-solver
Skill declares only LP solving with official Julia/HPR-LP downloads, but the actual implementation contains undeclared LLM API calls to OpenRouter, undeclared WhatsApp notifications to a specific phone number (+85259562906), and hardcoded user paths suggesting targeted deployment.
Why this conclusion was reached
2/4 dimensions flagged4 undeclared or violating capabilities were inferred.
3 lower-risk artifacts were extracted and still need context.
The report includes 4 attack-chain steps and 2 severe findings.
Dependencies are present but no obvious high-risk issue stands out.
Attack Chain
Entry · SKILL.md:1
reconnaissance · scripts/hpr_hybrid.py:325
Escalation · scripts/hpr_hybrid.py:292
Impact · scripts/hpr_hybrid.py:500
What drove the risk score up
scripts/hpr_hybrid.py calls OpenRouter API (line 23, 292-334) for LLM parsing - not declared in SKILL.md
Sends WhatsApp messages to +85259562906 (lines 500, 509-511) - not declared anywhere
scripts/hpr_hybrid.py hardcodes /home/ljw/ paths; hprlp_solve.sh hardcodes /home/ljw/
Line 357 uses os.popen() for Julia execution without sandboxing
Most important evidence
Undeclared LLM API calls to OpenRouter
SKILL.md claims the skill only uses Julia/HPR-LP solver. In reality, hpr_hybrid.py calls OpenRouter API (https://openrouter.ai/api/v1/chat/completions) using minimax/MiniMax-M2.7 model to parse natural language problems. This sends user problem data to an external LLM service.
scripts/hpr_hybrid.py:23 Undeclared WhatsApp notifications
The script sends WhatsApp messages to +85259562906 via 'openclaw message send' command at lines 500 and 509-511. This behavior is completely absent from SKILL.md and reveals a specific contact number.
scripts/hpr_hybrid.py:500 Hardcoded user-specific paths
The scripts contain hardcoded paths referencing a specific user '/home/ljw/' in both hpr_hybrid.py (lines 488-489) and hprlp_solve.sh (lines 17-18). This suggests the skill was designed for a specific user's environment rather than general deployment.
scripts/hpr_hybrid.py:488 Environment variable API key access
The script reads OPENROUTER_API_KEY from environment variables (line 325) to authenticate with the external LLM API. While reading API keys for legitimate use is not inherently malicious, combined with the undeclared external communication, this raises concerns.
scripts/hpr_hybrid.py:325 os.popen shell execution without sandbox
The run_julia_solve function (line 357) uses os.popen() to execute Julia solver commands. While this is documented as part of the LP solving workflow, the model code is not sandboxed.
scripts/hpr_hybrid.py:357 Declared capability vs actual capability
scripts/hpr_hybrid.py:357 writes temp .jl files to /tmp/ scripts/hpr_hybrid.py:23,292-334 - undeclared OpenRouter API calls scripts/hpr_hybrid.py:500,509 - os.system() for WhatsApp notifications scripts/hpr_hybrid.py:325 reads OPENROUTER_API_KEY from env Suspicious artifacts and egress
https://julialang.org/downloads/ README.md:17
https://openrouter.ai/api/v1/chat/completions scripts/hpr_hybrid.py:23
https://openclaw.ai scripts/hpr_hybrid.py:349
Dependencies and supply chain
| Package | Version | Source | Known vuln | Notes |
|---|---|---|---|---|
| urllib | stdlib | Python standard library | No | Standard library only |
File composition
scripts/hpr_hybrid.py README.md