T09 · Insecure Skill Coding Practices
- Location
scripts/common.py:208- Finding
Caller-Controlled Output Paths Are Silently Overwritten
- Content
View full analysis
subprocess.CompletedProcess: _check_binaries() # Ensure -y is present for overwrite if "-y" not in cmd: idx = cmd.index("ffmpeg") + 1 cmd.insert(idx, "-y") _ensure_logging() log_params("FFmpeg 执行开始", cmd=" ".join(cmd)) start = time.monotonic() if capture_output: result = subprocess.run(cmd, capture_output=True, text=True) elapsed = round(time.monotonic() - start, 3) if result.returncode != 0: print(f"FFmpeg stderr:\n{result.stderr}", file=sys.stderr) log_params("FFmpeg 执行失败", elapsed=elapsed, returncode=result.returncode) raise subprocess.CalledProcessError(result.returncode, cmd) log_params("FFmpeg 执行完成", elapsed=elapsed) return result else: result = subprocess.run(cmd) elapsed = round(time.monotonic() - start, 3) if result.returncode != 0: log_params("FFmpeg 执行失败", elapsed=elapsed, returncode=result.returncode) raise subprocess.CalledProcessError(result.returncode, cmd) log_params("FFmpeg 执行完成", elapsed=elapsed) return result ``` Caller-controlled output paths are accepted without confinement or existence checks: ```python # scripts/video_subtitle.py:38,50 parser.add_argument("--output", type=Path, help="输出文件路径(不指定则自动生成)") output_path = args.output or build_output_path("subtitle", input_path, suffix=suffix) ``` ```python # scripts/video_watermark.py:48,55 parser.add_argument("--output", type=Path, help="输出文件路径") output_path = args.output or build_output_ ...[truncated 1704 chars]- Remediation
View remediation
