🇰🇷 한글 설명
auto-changelog 2.6.1 미만 버전은 대상 저장소 내부의 설정 파일을 신뢰할 수 없는 소스로 처리하지 않아 보안 취약점이 발생합니다. 공격자가 제어하는 설정 파일의 handlebarsSetup 또는 plugins 옵션을 통해 임의의 코드를 실행하거나, git 인자 주입 및 임의 파일 쓰기 공격이 가능합니다.
💡 쉬운 설명
신뢰할 수 없는 프로젝트의 파일을 실행할 때, 그 안에 숨겨진 악성 명령어가 자동으로 실행될 수 있는 보안 결함입니다. 이를 통해 해커가 사용자의 컴퓨터나 서버의 중요한 정보를 훔쳐갈 수 있습니다.
🇺🇸 원문 (English)
auto-changelog before 2.6.1 merges configuration from inside the target repository (the .auto-changelog file and the auto-changelog key in package.json) into its options, and honors security-sensitive options from that untrusted source. The handlebarsSetup option is passed to require(), so running auto-changelog over attacker-controlled repository content (for example, in a CI workflow that checks out an untrusted pull request head, or locally on a forked or third-party repository) executes attacker-chosen code with the privileges of the invoking user or CI job, including access to workflow secrets, without the repository dependencies ever being installed. The plugins option similarly loads attacker-controlled modules from the repository. Under the same conditions, appendGitLog/appendGitTag allow git argument injection (e.g. --output= to write arbitrary files), output allows writing attacker-influenced content to arbitrary paths, and template causes an outbound request to an attacker-chosen URL. Version 2.6.1 treats in-repository configuration as untrusted and refuses to run when it sets these options, unless the new --unsafe-config flag is passed.
📍 영향받는 시스템
auto-changelog version < 2.6.1
⚔️ 공격 벡터
신뢰할 수 없는 저장소(Pull Request 등)를 CI/CD 환경에서 실행할 때 악성 설정 파일을 통한 코드 실행 및 파일 조작
🛡️ 대응 방법
auto-changelog를 2.6.1 이상 버전으로 업데이트하거나, 신뢰할 수 없는 저장소 실행 시 --unsafe-config 플래그 사용을 지양함
🔧 검증 코드
출력된 버전이 2.6.1 미만이면 취약한 상태이며, 2.6.1 이상이면 안전합니다.
npm list auto-changelog 2>/dev/null | grep -E 'auto-changelog@'