문제
NoSQL 인젝션(NoSQL Injection) 공격의 특징과 공격 원리를 설명하고, 이를 방어하기 위한 구체적인 대응 방안을 4가지 이상 서술하시오.
정답
NoSQL 인젝션은 MongoDB, CouchDB 등 NoSQL 데이터베이스에서 입력값 검증 부재로 공격자가 악의적인 쿼리나 연산자를 삽입하여 인증 우회, 데이터 탈취, 권한 상승 등을 수행하는 공격이다. 대응 방안: 1) 스키마 검증과 데이터 타입 강제를 통한 입력값 검증, 2) 화이트리스트 기반 쿼리 연산자 제한, 3) ORM/ODM 사용으로 쿼리 추상화, 4) 최소 권한 원칙에 따른 DB 계정 권한 제한, 5) 쿼리 로깅 및 이상 행위 모니터링 구축
NoSQL 인젝션쿼리 연산자스키마 검증화이트리스트ORMODM최소 권한모니터링
해설
NoSQL 데이터베이스는 관계형 DB와 달리 JSON 형태의 쿼리를 사용하므로 $where, $ne, $regex 등의 연산자를 악용한 공격이 가능하다. 예를 들어 로그인 시 {username: 'admin', password: {$ne: null}}과 같은 쿼리로 패스워드 없이 인증을 우회할 수 있다. 스키마 검증은 입력 데이터의 구조와 타입을 강제하여 예상치 못한 연산자 삽입을 차단하고, 화이트리스트는 허용된 연산자만 사용하도록 제한한다.