코드 인젝션 (Code Injection)
Code Injection
설명
코드 인젝션(Code Injection)은 애플리케이션이 사용자 입력을 코드로 실행할 때 발생하는 취약성입니다. 공격자는 조작된 입력을 통해 임의의 코드를 실행하여 시스템 권한을 획득하거나, 데이터를 유출하거나, 서비스를 중단시킬 수 있습니다.
잠재적 영향
시스템 권한 상승: 공격자가 시스템 권한을 획득할 수 있습니다.
데이터 유출: 민감한 데이터가 공격자에게 노출될 수 있습니다.
서비스 거부(DoS): 시스템 자원을 소모시키거나 중요한 프로세스를 중단시켜 서비스가 중단될 수 있습니다.
해결 방법
사용자 입력 검증: 실행되는 모든 사용자 입력을 철저히 검증합니다.
안전한 코드 실행 방법 사용:
eval이나exec같은 위험한 함수 사용을 피하고, 안전한 대안을 사용합니다.코드 서명: 실행되는 코드가 신뢰할 수 있는 출처에서 온 것인지 확인합니다.
취약한 코드 및 안전한 코드 예시
Unsafe Flask code & Safe Flask code
# Unsafe Flask code
from flask import Flask, request
app = Flask(__name__)
@app.route('/exec')
def unsafe_exec():
code = request.args.get('code')
exec(code)
return "Code executed"설명:
취약한 코드: 사용자 입력값을 검증하지 않고
exec함수로 실행하여, 공격자가 임의의 코드를 실행할 수 있습니다.안전한 코드: 허용된 함수만 실행하도록 제한하여, 공격자가 임의의 코드를 실행할 수 없도록 합니다.
참조
OWASP: Code Injection
Last updated