Problem
티켓 ID가 검증 없이 브랜치명, 파일시스템 경로, API 호출에 직접 사용됨.
../../etc 같은 입력 시 path traversal 위험
- 공백, 특수문자 포함 시 비정상 브랜치명 생성
manager.rs:101에서 format!("{}{}", branch_prefix, ticket) 으로 직접 결합
Solution
fn validate_ticket_id(ticket: &str) -> Result<()> {
if ticket.is_empty() || ticket.contains('/') || ticket.contains('\\') || ticket.contains("..") {
anyhow::bail!("invalid ticket ID '{}'", ticket);
}
Ok(())
}
start, ship, merge 등 진입점에서 호출
Problem
티켓 ID가 검증 없이 브랜치명, 파일시스템 경로, API 호출에 직접 사용됨.
../../etc같은 입력 시 path traversal 위험manager.rs:101에서format!("{}{}", branch_prefix, ticket)으로 직접 결합Solution
start,ship,merge등 진입점에서 호출