보안 취약점 분석에서 "sink point"(또는 간단히 sink)는 외부 입력이 최종적으로 사용되거나 실행되는 지점을 말합니다. 이 지점에서 악의적인 입력이 실제로 시스템에 영향을 주는 동작을 유발할 수 있습니다.


🔥 간단히 말해:


📌 예시로 이해해보기

예시 코드:

String cmd = request.getParameter("cmd");
Runtime.getRuntime().exec(cmd);

만약 cmd 파라미터에 "rm -rf /" 같은 악성 명령이 들어가면, 진짜 실행될 수 있기 때문에 취약점(RCE) 이 발생.


🔍 Sink의 예시 유형들

Sink 유형 설명
Command Execution Runtime.exec(), ProcessBuilder.start()
SQL Query Execution Statement.executeQuery()
Script Evaluation MVEL.eval(), JavaScriptEngine.eval()
File Access FileInputStream, FileWriter
Reflection Class.forName(), Method.invoke()
Deserialization ObjectInputStream.readObject()

🧠 보안 분석에서 Sink를 찾는 이유?

취약점은 단순히 입력이 있다고 생기지 않음.

"위험한 동작으로 이어지는지", 즉 Sink가 존재하는지가 중요함.