🇰🇷 한글 설명
TypeORM의 특정 버전에서 migration:generate 명령 실행 시 데이터베이스 스키마 메타데이터를 템플릿 리터럴로 처리하는 과정에서 보안 취약점이 발견되었습니다. 공격자가 데이터베이스의 COMMENT나 DEFAULT 값에 악성 페이로드를 삽입할 경우, 생성된 마이그레이션 파일이 로드될 때 JavaScript 엔진에 의해 코드가 실행될 수 있습니다.
💡 쉬운 설명
데이터베이스 설정값에 몰래 숨겨진 악성 코드가 마이그레이션 파일을 만드는 과정에서 자동으로 실행될 수 있는 문제입니다. 데이터베이스를 수정할 수 있는 권한이 있다면 시스템을 제어할 위험이 있습니다.
🇺🇸 원문 (English)
TypeORM is a TypeScript and JavaScript ORM for Node.js that supports PostgreSQL, MySQL, MariaDB, SQLite, SQL Server, Oracle, and other databases. Prior to versions 0.3.31 and 1.1.0, typeorm migration:generate embeds database schema metadata into JavaScript or TypeScript template literals in src/commands/MigrationGenerateCommand.ts, escaping backticks but not ${...} interpolation. An attacker with database schema write access can place a payload in column COMMENT or DEFAULT metadata, or another introspected schema string, and the JavaScript engine evaluates the payload when the generated migration is loaded through migration:run, import, or require. This issue is fixed in versions 0.3.31 and 1.1.0.
📍 영향받는 시스템
TypeORM versions prior to 0.3.31 and 1.1.0
⚔️ 공격 벡터
데이터베이스 스키마 메타데이터(COMMENT, DEFAULT 등)에 ${...} 형태의 삽입 공격 페이로드를 주입하여 마이그레이션 파일 실행 시 코드 실행 유도
🛡️ 대응 방법
TypeORM을 0.3.31 또는 1.1.0 이상의 최신 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 버전이 0.3.31 미만이거나 1.1.0 미만인 경우 취약한 상태입니다.
npm list typeorm | grep typeorm