T09 · Insecure Skill Coding Practices
- Location
scripts/alarm_query.py:138- Finding
Sensitive API credentials are exposed through command-line arguments
- Content
View full analysis
Vulnerability Details
File Locations:
scripts/alarm_query.py:138-143scripts/child_care.py:150-155scripts/stranger_manager.py:161-166scripts/stats_query.py:278-283
Vulnerability Type: Sensitive credential exposure through process arguments
Risk Level: MediumVulnerable Code
scripts/alarm_query.py:138-143:python parser.add_argument("--uuid", required=True, help="开放平台用户 uuid") parser.add_argument("--appkey", required=True, help="应用 appKey") parser.add_argument("--secret", required=True, help="应用密钥") parser.add_argument("--auth", required=True, help="用户 token") parser.add_argument("--movecard", type=int, required=True, help="移动卡标识") parser.add_argument("--msg-type", required=True,scripts/child_care.py:150-155:python parser.add_argument("--uuid", required=True, help="开放平台用户 uuid") parser.add_argument("--appkey", required=True, help="应用 appKey") parser.add_argument("--secret", required=True, help="应用密钥") parser.add_argument("--auth", required=True, help="用户 token") parser.add_argument("--movecard", type=int, required=True, help="移动卡标识") parser.add_argument("--enable", type=str, choices=["true", "false"],scripts/stranger_manager.py:161-166:python parser.add_argument("--uuid", required=True, help="开放平台用户 uuid") parser.add_argument("--appkey", required=True, help="应用 appKey") parser.add_argument("--secret", required=True, help="应用密钥") parser.add_argument("--auth", required=True, help="用户 token") parser.add_argument("--movecard", type=int, required=True, help="移动卡标识") parser.add_argument("--alarm-id", required=True, help="报警 ID")scripts/stats_query.py:278-283:python parser.add_argument("--uuid", required=True, help="开放平台用户 uuid") parser.add_argument("--appkey", required=True, help="应用 appKey") parser.add_argument("--secret", required=True, help="应用密钥") parser.add_argument("--auth", required=True, help="用户 to ...[truncated 2585 chars]- Remediation
View remediation
Remediation Suggestions
- Remove
--secretand--authfrom the command-line interface. - Read credentials from the documented
JF_APP_SECRETandJF_AUTHORIZATIONenvironment variables, or preferably from a permission-restricted secret manager. - Permit non-sensitive operational values on the command line while keeping authentication material out of process arguments.
- Fail safely when required credentials are unavailable; do not prompt in contexts where input may be echoed or logged.
- Ensure exceptions, diagnostics, and verbose output never include authorization headers, secrets, signatures, or complete reconstructed requests.
- Add automated tests that verify secrets do not appear in process arguments or program output.
- Document token expiration and rotation procedures, and rotate credentials that may previously have been used through the vulnerable interface.
- Where supported, use short-lived, narrowly scoped authorization tokens to limit the impact of exposure.
- Remove
