서버 측 코드 주입 (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

링크