서버 측 코드 인젝션 (NodeJS)
설명
대상 응용 프로그램은 코드 인젝션에 취약한 것으로 확인되었습니다. 악의적인 사용자는 서버에서 실행되는 임의의 JavaScript 코드를 삽입할 수 있습니다. 이로 인해 저장된 비밀 정보에 접근하여 시스템을 완전히 손상시키거나 계정을 탈취하거나 OS 명령을 실행할 수 있습니다.
조치
절대 사용자 입력을 eval
, setTimeout
, setInterval
와 같이 문자열 데이터를 코드로 평가하는 함수에 직접 전달하지 마십시오. 이러한 메서드에 문자열 값을 전달하는 건 거의 이득이 없으며, 이에 따라 현재 로직을 사용자 입력과 동적으로 평가하는 보다 안전한 구현으로 대체하는 것이 가장 좋은 권장사항입니다. 다른 대안으로는 Map에 함수나 메서드를 저장하고 키를 사용하여 조회하는 방식이 있습니다. 키가 존재하면 해당 함수를 실행할 수 있습니다.
const function_map = new Map();
function_map.set('fn', function() {
console.log('hello world');
})
const input = 'fn2';
const fn = function_map.get(input)
if (fn) {
fn();
} else {
console.log('invalid input');
}
Details
ID | 집계된 값 | CWE | 유형 | 위험성 |
---|---|---|---|---|
94.4 | false | 94 | Active | 높음 |