T09 · Insecure Skill Coding Practices
Warning
- Location
- scripts/verify_install.sh:9
- Finding
- Mandatory installation verification failures are suppressed## Vulnerability Details **File Location**: `scripts/verify_install.sh`, lines 9–15 **Vulnerability Type**: Failure suppression and false-positive verification **Risk Level**: Medium ```bash echo "[INFO] Memory slot binding" openclaw config get plugins.slots.memory || true echo "[INFO] Skills readiness" openclaw skills check || true echo "[PASS] Verification completed." ``` ### Technical Analysis The script suppresses nonzero exit statuses from the memory-slot and skill-readiness checks by appending `|| true`. Because the script uses `set -e`, these expressions specifically override the intended fail-fast behavior. The memory-slot command also only retrieves the configured value; it does not verify that the value equals `evermemory`. The script then unconditionally prints a success message even if the slot query or skill-readiness check failed. Consequently, callers cannot rely on a successful exit status or the `[PASS]` message as evidence that all documented installation requirements were met. ### Attack Path 1. A faulty, incomplete, or tampered installation leaves `plugins.slots.memory` unset or bound to a different plugin. 2. Alternatively, the installed skill fails the `openclaw skills check` readiness validation. 3. An operator or deployment pipeline invokes `scripts/verify_install.sh`. 4. The relevant command returns a nonzero status. 5. `|| true` converts that failure into a successful shell expression. 6. The script continues and prints `[PASS] Verification completed.` 7. Downstream automation or an operator accepts the installation despite its invalid state. ### Impact Assessment This issue does not directly grant additional operating-system privileges. Its impact is on deployment integrity and assurance: an unbound memory slot, unavailable skill, or otherwise incomplete installation can be falsely approved for use. This may cause incorrect runtime behavior, loss of expected memory functionalit ...[truncated 66 chars]
- Remediation
- ## Remediation Suggestions 1. Remove `|| true` from every mandatory verification command so failures propagate through `set -e`. 2. Capture and validate the memory-slot value explicitly rather than checking only whether it can be retrieved: ```bash memory_slot="$(openclaw config get plugins.slots.memory)" if [[ "$memory_slot" != "evermemory" ]]; then echo "[ERROR] Expected memory slot 'evermemory', found: $memory_slot" >&2 exit 1 fi ``` 3. Require `openclaw skills check` to return successfully: ```bash openclaw skills check ``` 4. Print the final `[PASS]` message only after every mandatory check has succeeded. 5. Add automated tests covering an unset slot, an incorrectly bound slot, and a failed skill-readiness check. Each case should produce a nonzero script exit status.
