🇰🇷 한글 설명
tsParticles 4.0.0부터 4.3.2 이전 버전의 안정 배포 워크플로우는 릴리스 노트 본문(steps.release.outputs.body)을 Bash echo 명령에 직접 삽입한 뒤 RAW_RELEASE.md에 기록합니다. 기여자가 제어하는 릴리스 노트 텍스트에 포함된 셸 메타문자가 메인테이너가 안정 릴리스를 시작할 때 실행될 수 있으며, 이로 인해 생성된 산출물이나 작업 공간 스크립트가 변조되고 GITHUB_TOKEN과 쓰기 권한을 가진 후속 릴리스 단계에 영향을 줄 수 있습니다. 이 문제는 4.3.2 버전에서 수정되었습니다.
💡 쉬운 설명
tsParticles라는 애니메이션 라이브러리의 자동 배포 과정에서 릴리스 노트 글자에 숨겨진 명령이 실행될 수 있는 문제입니다. 이를 악용하면 배포 과정의 파일과 인증 토큰이 탈취 또는 변조될 수 있습니다.
🇺🇸 원문 (English)
tsParticles is a TypeScript library for creating highly customizable particle animations. From 4.0.0 until 4.3.2, the stable publish workflow interpolates steps.release.outputs.body directly into an echo command in Bash source before writing RAW_RELEASE.md. Contributor-controlled shell metacharacters in generated release-note text can therefore execute when a maintainer starts a stable release, allowing modification of generated artifacts or workspace scripts and affecting later release steps that hold GITHUB_TOKEN and write permissions. This issue is fixed in version 4.3.2.
📍 영향받는 시스템
tsParticles 4.0.0 ~ 4.3.2 미만 버전의 stable 릴리스 배포 워크플로우
⚔️ 공격 벡터
기여자가 릴리스 노트 본문에 셸 메타문자(예: $(...), 백틱, 따옴표)를 포함시키면, 메인테이너의 안정 릴리스 실행 시 해당 명령이 워크플로우 내에서 실행됨
🛡️ 대응 방법
tsParticles를 4.3.2 이상 버전으로 업데이트하고, 릴리스 워크플로우에서 릴리스 노트 값을 셸에 직접 삽입하지 않도록 환경 변수 등으로 안전하게 전달하도록 수정
🔧 검증 코드
출력된 버전이 4.3.2 이상이면 수정된 버전이며, 4.0.0 이상 4.3.2 미만이면 취약한 버전이므로 업데이트가 필요합니다.
npm ls tsparticles 2>/dev/null | grep -E 'tsparticles@'