T09 · Insecure Skill Coding Practices
Error
- Location
- forge_plan.py:297
- Finding
- Reorganization plans are generated without enforcing the required backup<![CDATA[ ## Vulnerability Details **File Location**: `forge_plan.py:297-337`, `forge_plan.py:374-393` **Vulnerability Type**: Missing security-control enforcement **Risk Level**: High ### Vulnerable Code ```python def generate_plan(config, scan_report: dict) -> dict: """Generate complete reorganization plan.""" print("Generating safety rules...") safety_rules = generate_safety_rules(config, scan_report) print("Planning directory creation...") dirs = generate_directory_creation(config) print("Generating _README.md content...") readmes = generate_readmes(config) print("Planning file moves...") moves = generate_moves(config, scan_report, safety_rules) print("Building execution order...") execution_order = build_execution_order(moves, safety_rules) print("Validating plan...") issues = validate_plan(moves, safety_rules, scan_report) plan = { "generated_at": datetime.now().isoformat(), "workspace_root": getattr(config, "WORKSPACE_ROOT", "."), "safety_rules": safety_rules, "directories_to_create": dirs, "readmes_to_generate": readmes, "moves": moves, "execution_order": execution_order, "validation_issues": issues, "summary": { "directories_to_create": len(dirs), "readmes_to_generate": len(readmes), "files_to_move": len(moves), "reference_patches": sum(len(m.get("reference_updates", [])) for m in moves), "validation_errors": len([i for i in issues if i["severity"] in ("ERROR", "CRITICAL")]), "validation_warnings": len([i for i in issues if i["severity"] == "WARNING"]), }, "rollback_command": ( "# To rollback, restore from the pre-move backup:\n" f"# tar -xzf backups/forge-pre-move-*.tar.gz -C {getattr(config, 'WORKSPACE_ROOT', '.')}\n" "# Then verify with: python3 forge_audit.py --config forge_config.py --phase ...[truncated 2096 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Enforce backup verification before calling `generate_moves()` whenever `REQUIRE_BACKUP_BEFORE_PLAN` is enabled. 2. Fail closed if the backup directory is missing, no recent archive exists, or archive validation fails. 3. Require evidence of a successful pre-audit, such as a signed or integrity-protected audit result tied to the current workspace snapshot. 4. Verify that the backup: - Is a regular, non-symlink file. - Is readable and non-empty. - Has a supported archive format. - Passes archive integrity checks. - Contains the expected workspace root and critical protected files. 5. Return a nonzero exit status and do not write a plan when the requirement is unsatisfied. 6. Add automated tests confirming that plan generation is rejected when backups are absent, stale, corrupt, or unrelated. ]]>
