T09 · Insecure Skill Coding Practices
- Location
config/config.json:45- Finding
Hardcoded JIRA Credentials Transmitted over Plaintext HTTP
- Content
View full analysis
Vulnerability Details
File Location:
config/config.json:45-48
Additional Locations:scripts/jira_auto_analyze.py:56-58,scripts/jira_auto_analyze.py:141-144,scripts/jira_auto_analyze.py:173-196,scripts/debug_jira_login.py:45-122,scripts/setup.py:136-149
Vulnerability Type: Hardcoded credentials and unencrypted authentication
Risk Level: HighVulnerable Code
json "jira_url": "http://jira.51baiwang.com", "filter_id": "13123", "username": "liuwei1", "password": "Lw@123456",The core automation also loads these values and enters them into the HTTP-hosted login form:
python self.jira_credentials = { 'username': self.jira_config.get('username', 'liuwei1'), 'password': self.jira_config.get('password', 'Lw@123456') }python jira_url = self.jira_config.get('jira_url', 'http://jira.51baiwang.com') self.page.goto(jira_url, wait_until='networkidle') username_input = self.page.locator('#login-form-username') if username_input.count() > 0: username_input.fill(self.jira_credentials['username']) password_input = self.page.locator('#login-form-password') if password_input.count() > 0: password_input.fill(self.jira_credentials['password'])Technical Analysis
A reusable JIRA username and password are committed directly to the project configuration and duplicated as fallback values in executable scripts. The setup script can also generate a configuration file containing the same credential, while the diagnostic login script embeds it independently.
Anyone who can read the package, repository, deployment artifact, backup, or generated configuration can recover the credential without executing the Skill. Removing only
config/config.jsonwould not resolve the issue because the same password remains in source defaults and documentation.The configured JIRA URL uses plaintext HTTP. The browser submits the credential to that endpoin ...[truncated 1486 chars]
- Remediation
View remediation
Remediation Suggestions
- Immediately revoke and rotate the exposed password. Review JIRA authentication and issue-change logs for unauthorized activity.
- Remove the username and password from configuration, source defaults, diagnostic scripts, documentation examples, generated files, and repository history.
- Load credentials from a managed secret store or protected environment variables. Do not provide usable fallback credentials.
- Fail closed when credentials are missing rather than silently using default values.
- Replace the HTTP URL with HTTPS and enforce valid certificate and hostname verification.
- Redirect HTTP requests to HTTPS server-side and prevent authentication over plaintext transport.
- Use a dedicated automation account with only the minimum projects and operations required.
- Prefer short-lived tokens or scoped API credentials over a reusable interactive password where JIRA supports them.
- Restrict secret-bearing configuration files to the service account, such as mode
0600, and exclude them from version control. - Add secret scanning and checks that reject plaintext JIRA URLs in continuous integration.
