NoSQL 인젝션
NoSQL Injection
설명
NoSQL 인젝션은 NoSQL 데이터베이스에 대한 쿼리에 사용자 입력을 직접 포함시킬 때 발생하는 취약성입니다. 이는 공격자가 악의적으로 조작된 입력을 통해 데이터베이스 명령을 실행하거나 민감한 데이터를 탈취할 수 있게 합니다.
잠재적 영향
데이터 유출: 공격자가 민감한 데이터를 조회하거나 유출할 수 있습니다.
데이터 변조: 공격자가 데이터를 조작하거나 삭제할 수 있습니다.
서비스 중단: 악의적인 쿼리로 인해 데이터베이스 성능이 저하되거나 서비스가 중단될 수 있습니다.
해결 방법
입력값 검증: 사용자 입력을 철저히 검증하여 악의적인 패턴을 차단합니다.
보안 라이브러리 사용: NoSQL 인젝션 방지를 위한 보안 라이브러리를 사용합니다.
취약한 코드 및 안전한 코드 예시
Unsafe NoSQL query in Flask & Safe NoSQL query in Flask
취약한 코드
# Unsafe NoSQL query in Flask
from flask import Flask, request
from pymongo import MongoClient
app = Flask(__name__)
client = MongoClient('mongodb://localhost:27017/')
db = client.mydatabase
@app.route('/user')
def get_user():
username = request.args.get('username')
query = json.loads(username)
return db.users.find_one(query)안전한 코드
설명:
취약한 코드: 사용자 입력을 검증하지 않고 쿼리에 직접 포함시켜 NoSQL 인젝션 공격에 취약합니다.
안전한 코드: 사용자 입력을
mongosanitizer를 사용하여 검증하여 사용하도록 합니다.
참조
OWASP: Injection
Last updated