T09 · Insecure Skill Coding Practices
Error
- Location
- SKILL.md:64
- Finding
- TLS Certificate Verification Is Explicitly Disabled in Documented Workflows<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 64–66 and line 113 **Vulnerability Type**: TLS endpoint authentication bypass **Risk Level**: High ### Vulnerable Code ```bash GIT_SSL_NO_VERIFY=1 git clone https://github.com/<owner>/<repo>.git # When finished: unset https_proxy http_proxy ``` A second diagnostic example also disables verification: ```bash curl -sk --resolve github.com:443:205.164.50.200 https://github.com/ | head -c 200 ``` The documentation additionally suggests the following insecure curl option at line 55: ```bash # or skip verification: curl --resolve "github.com:443:$IP" -k https://github.com/... ``` ### Technical Analysis `GIT_SSL_NO_VERIFY=1` and curl's `-k`/`--insecure` option disable validation of the server certificate and therefore remove TLS endpoint authentication. Encryption may still occur, but the client can no longer reliably determine whether it is communicating with the intended proxy or an impersonating endpoint. This is especially significant because the Skill deliberately routes connections through an external reverse proxy that terminates TLS using the bundled Scholar root CA. Although `scholar-fetch.sh` uses that CA, the documented Git and generic proxy workflows instead instruct users to bypass certificate verification entirely. The setting shown for Git is scoped to the individual command, but all HTTPS operations initiated by that command inherit the bypass. Such operations may include redirects, Git authentication, and repository object transfers. ### Attack Path 1. A user starts `scholar-proxy.py` and follows the documented Git or curl workflow. 2. The user invokes Git with `GIT_SSL_NO_VERIFY=1` or curl with `-k`. 3. An attacker able to influence DNS, routing, the local network, or the proxy endpoint presents an untrusted certificate. 4. The client accepts the certificate because verification has been disabled. 5. The attacker relays, observes, or modifies the HTTPS traffic. 6. Rep ...[truncated 756 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Remove all recommendations to use `GIT_SSL_NO_VERIFY=1`, curl `-k`, or `--insecure`. 2. Configure each client to trust only the bundled CA where use of the Scholar proxy is explicitly intended. For Git, use a command-scoped CA configuration such as: ```bash git -c http.sslCAInfo="$PWD/scholar-root-ca.pem" clone https://github.com/owner/repo.git ``` 3. Avoid installing the bundled root CA into the operating system's global trust store. Use per-command or per-host trust configuration to minimize its authority. 4. Clearly disclose that the reverse proxy terminates TLS and can observe or modify plaintext traffic. 5. Recommend avoiding transmission of reusable credentials through the proxy. Where authentication is unavoidable, use narrowly scoped and short-lived credentials. 6. Remove the insecure diagnostic example or replace it with a command that supplies `--cacert scholar-root-ca.pem`. ]]>
