서버 측 코드 주입 (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');
}
세부정보
ID | 집계 | CWE | 유형 | 위험 |
---|---|---|---|---|
94.4 | false | 94 | Active | high |